我正在 64 位 Web 服务器上执行监控任务,该服务器上有几个以 32 位模式运行的应用程序池。我正在使用 perfmon 中的 .Net CLR 内存对象来监控它们。但是,我的性能监视器显示除 GC 句柄和正在使用的接收器块数量之外的所有内容均为 0。其余应用程序池运行良好。在另一台以完全相同方式配置的服务器上(在 64 位 IIS 上运行的 32 位应用程序池),WMI 甚至没有枚举我的所有 w3wp 实例。
有人对这些问题有什么想法吗?或者是否有工具可以监视在 64 位平台上运行的 32 位应用程序池,而不是使用内置性能监视器?
此外,在 WMI 未枚举所有 w3wp 实例的服务器上,我们在事件日志中看到以下三条错误消息。
“ASP”服务的性能库“C:\WINDOWS\system32\aspperf.dll”的配置信息与注册表中存储的受信任性能库信息不匹配。此库中的函数将不被视为受信任。(事件 ID 2003,来源 Perflib)
“W3SVC”服务的性能库“C:\WINDOWS\system32\inetsrv\w3ctrs.dll”的配置信息与注册表中存储的受信任性能库信息不匹配。此库中的函数将不被视为受信任。(事件 ID 2003,来源 Perflib)
“InetInfo”服务的性能库“C:\WINDOWS\system32\infoctrs.dll”的配置信息与注册表中存储的受信任性能库信息不匹配。此库中的函数将不被视为受信任。(事件 ID 2003,来源 Perflib)
由于该服务的性能计数器库生成一个或多个错误,已禁用此会话中“ASP.NET_2.0.50727”服务的性能计数器数据收集。强制执行此操作的错误已写入应用程序事件日志。(事件 ID 1018,来源 Perflib)
这些错误可能与我的问题有关。即使我重新注册 wbem 目录中的所有 .dll 文件,它仍然会出现。有人知道这些错误消息是什么意思,我该如何修复它们吗?
此外,对于 .Net CLR 内存对象中值为 0 的第一个服务器,事件日志中没有错误消息。
答案1
要修复第二台机器上的错误,请Lodctr
从命令提示符中注册性能计数器:
lodctr /T:W3SVC
lodctr /T:InetInfo
lodctr /T:ASP