在 Window Azure 上获取与性能计数器相关的错误

Posted

技术标签:

【中文标题】在 Window Azure 上获取与性能计数器相关的错误【英文标题】:Getting Peformace Counter related error on Window Azure 【发布时间】:2011-10-20 10:23:34 【问题描述】:

我正面临一些可能对谁感兴趣的关键问题,那些正在玩 window azure sdk 的人。我在 EXE 上创建了从系统读取性能计数器数据,如 CPU、内存、asp.net 会话,如

queryCollection = ExecuteWMIQuery("SELECT * FROM win32_perfformatteddata_perfdisk_physicaldisk");

我已经在我上传到 Azure 窗口的简单 asp.net 应用程序的启动任务中添加了这个 EXE。现在,当我连接到其中的 RDP 时,我可以在我的事件日志中看到以下错误,如下所示。

已禁用从 “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。

所以我在想我的 EXE 试图获取 32 位的性能计数器(win32 表明这一点)并且会记录以上错误。

所以这里的任何人都遇到过这种类型的问题,如果我的猜测是正确的,那么有没有办法实现我的 EXE 逻辑,使其可以在任何环境(32 位或 64 位)中顺利运行?

希望这仍然是一个有趣的问题!!!

提前致谢 阿伦。

【问题讨论】:

我只是想知道您是否有任何理由不使用 Azure 诊断而不是尝试实现自己的诊断? msdn.microsoft.com/en-us/library/windowsazure/gg433048.aspx @Igne Henriksen ,是的,我已经阅读过相关内容,但是这不可能(我自己的逻辑)?我只是第一次在事件日志中收到错误,并且在 90% 的情况下还获得了性能计数器数据。 【参考方案1】:

没错。在 Azure 中运行的 IIS 运行 64 位,除非您在启动任务中将其更改为运行 32 位。您可以尝试使用 Any CPU 设置来构建它。但最有可能的最好方法是做类似 sysinternal 工具所做的事情。它们将在需要时生成一个以 64 位模式运行的新进程。然后你就可以同时处理了。

【讨论】:

【参考方案2】:

我在迁移到 Azure VM 时遇到此错误。

通过使用位于 Framework64 文件夹中的 InstallUtil 而不是 Framework 文件夹中的 InstallUtil 解决了这个问题

【讨论】:

以上是关于在 Window Azure 上获取与性能计数器相关的错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Powershell脚本获取Azure VM来宾指标(性能计数器)

带有性能计数器的 Azure Service Fabric 上的 Azure Application Insights

在 Azure 中使用 Visual Studio Online 加载测试性能计数器

在自托管 Web 应用程序中使用性能计数器

为啥 Azure 资源组与特定区域相关联?

如何获取 Azure 服务结构性能指标?