我正在为应用程序创建一些自定义性能计数器。我编写了一个简单的 C# 工具来创建类别和计数器。例如,下面的代码片段基本上就是我正在运行的代码片段。然后,我运行一个单独的应用程序,不断刷新计数器的原始值。当它运行时,计数器和虚拟实例会在本地的 perfmon 中看到。
我遇到的问题是,我们使用的监控系统无法看到我从另一台服务器远程查看时创建的多实例计数器中的实例。当使用perfmon浏览计数器时,我可以看到类别和计数器,但实例框呈灰色,我什至无法选择“所有实例”,也无法单击“添加”。使用其他访问方法,例如[typeperf][1]
表现出类似的问题。
我不确定这是服务器问题还是代码问题。这只能在我需要的生产环境中重现。在我的桌面和开发服务器上,它运行得很好。我是所有服务器的本地管理员。
CounterCreationDataCollection collection = new CounterCreationDataCollection();
var category_name = "My Application";
var counter_name = "My counter name";
CounterCreationData ccd = new CounterCreationData();
ccd.CounterType = PerformanceCounterType.RateOfCountsPerSecond64;
ccd.CounterName = counter_name;
ccd.CounterHelp = counter_name;
collection.Add(ccd);
PerformanceCounterCategory.Create(category_name, category_name, PerformanceCounterCategoryType.MultiInstance, collection);
然后,在一个单独的应用程序中,我运行它来生成虚拟实例数据:
var pc = new PerformanceCounter(category_name, counter_name, instance_name, false);
while (true) {
pc.RawValue = 0;
Thread.Sleep(1000);
}
您的程序是否恰好是在 Windows 2008 R2 或其他 64 位 Windows 操作系统上运行的 32 位程序?如果是这样,您可能需要检查“性能计数器 DLL 主机”服务是否正在运行。此服务使 64 位和远程进程能够查询 32 位进程提供的计数器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)