我已经开发了一个用于监视azure应用程序(Webrole)的Web应用程序,它通过控制台(EXE)应用程序附加启动任务与azure应用程序,并且EXE将定期发送数据用于cpu使用,内存和asp.net总会话,但是我已按照以下方式使用WMI查询完成。
CPU使用率
ManagementObjectCollection queryCollection = ExecuteWMIQuery("SELECT * FROM Win32_Processor");
记忆
queryCollection = ExecuteWMIQuery("SELECT * FROM Win32_OperatingSystem");
asp.net会话
queryCollection = ExecuteWMIQuery("Select SessionsActive from Win32_PerfRawData_ASPNET_ASPNETApplications");
但是当我用窗口Azure测试它时,我在事件日志中收到错误,如下所示
禁用性能计数器数据收集 “ASP.NET_64_2.0.50727”服务因为性能计数器库 该服务已生成一个或多个错误。这个错误 强制此操作已写入应用程序事件日志。 在为此启用性能计数器之前更正错误 服务
Windows无法打开64位可扩展计数器DLL 在32位环境中使用ASP.NET_64_2.0.50727。联系文件供应商 获得32位版本。或者,如果您运行的是64位 在本机环境中,您可以通过打开64位可扩展计数器DLL 使用64位版本的性能监视器。要使用此工具, 打开Windows文件夹,打开System32文件夹,然后启动 PERFMON.EXE。
这就是为什么我想用System.Diagnostic类改变我的逻辑,并希望使用该类获得CPU使用率,可用内存和asp.net总会话。
我已连接天蓝色应用程序的RDP并运行 perfmon.exe 并查看可用的性能计数器,但我发现只有一个计数器%处理器时间,所以我需要添加另一个计数器。
任何人都可以建议我如何启用它并在我的EXE应用程序中使用C#获取(将在启动任务中)?
您的回放对我实现目标非常有帮助
提前致谢!
阿伦。
答案 0 :(得分:2)
听起来您的应用程序已构建为32位应用程序。尝试使用配置管理器设置为“Any CPU”进行重建,然后重新部署。
另外,请检查是否收到有关部署32位DLL的任何警告。
答案 1 :(得分:0)
Michael washam在使用azure powershell cmdlet进行天蓝色诊断和性能方面有一些非常好的帖子。恕我直言这是最好的方式。
迈克尔的博客。 http://michaelwasham.com/