【问题标题】:How to enable and get Perfromance counters for Window Azure如何启用和获取 Window Azure 的性能计数器
【发布时间】:2011-12-13 01:13:15
【问题描述】:

我已经开发了一个 Web 应用程序,用于通过控制台(EXE)应用程序在启动任务中使用 azure 应用程序来监视 azure 应用程序(Webrole),并且 EXE 将定期发送数据以了解 cpu 使用情况、内存和 asp.net 总会话,但是我已使用 WMI Query 完成此操作,如下所示。

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");

但是当我使用 Windows 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 总会话。

我已连接 azure 应用程序的 RDP 并运行 perfmon.exe 并查看可用的性能计数器,但我发现只有一个计数器 %processor time,所以我需要添加另一个计数器。

谁能建议我如何在我的 EXE 应用程序中启用它并使用 C# 获取(将在启动任务中)?

你的回放对我实现目标很有帮助

提前致谢!
阿伦。

.

【问题讨论】:

  • 那么,您检查了事件日志吗?
  • @Jeremy 是的,我已经检查过了
  • ... 和?日志说了什么?
  • @Jeremy 我在上面的问题中提到过
  • "强制执行此操作的错误已被写入应用程序事件日志。" 检查 application 事件日志 - 我希望得到请求的结果计数器不可用 -- Azure 是 64 位系统,因此计数器不同于 32 位 Windows。

标签: azure console-application performancecounter system.diagnostics


【解决方案1】:

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

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

【讨论】:

  • 有时有效,有时无效。我可以尝试在我的启动任务中按照第二个错误启动 Perfmon.exe 吗?
【解决方案2】:

Michael washam 有一些关于使用 azure powershell cmdlet 进行 azure 诊断和性能的非常好的帖子。恕我直言,powershell 是使用 azure 的最佳方式。

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

【讨论】:

  • 现阶段我很难理解 :)
  • 同样,我这周才开始使用 cmdlet,他们需要一些时间来适应!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
相关资源
最近更新 更多