如何为Window Azure启用和获取性能计数器

时间:2011-10-22 05:57:14

标签: azure console-application performancecounter system.diagnostics

我已经开发了一个用于监视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#获取(将在启动任务中)?

您的回放对我实现目标非常有帮助

提前致谢!
阿伦。

2 个答案:

答案 0 :(得分:2)

听起来您的应用程序已构建为32位应用程序。尝试使用配置管理器设置为“Any CPU”进行重建,然后重新部署。

另外,请检查是否收到有关部署32位DLL的任何警告。

答案 1 :(得分:0)

Michael washam在使用azure powershell cmdlet进行天蓝色诊断和性能方面有一些非常好的帖子。恕我直言这是最好的方式。

迈克尔的博客。 http://michaelwasham.com/