Performance Counter的使用

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

一 PerformanceCounter 基本介绍
1 简单介绍
表示 Windows NT 性能计数器组件
命名空间:System.Diagnostics
程序集:System(在 system.dll 中)
2 构造函数(只介绍本文要用到的)
PerformanceCounter (String, String, String)
功能:
初始化 PerformanceCounter 类的新的只读实例,
并将其与本地计算机上指定的系统性能计数器或自定义性能计数器及类别实例关联
参数说明:
public PerformanceCounter (
 string categoryName,
 string counterName,
 string instanceName
)
categoryName
性能计数器关联的性能计数器类别(性能对象)的名称。
counterName
性能计数器的名称。
instanceName
性能计数器类别实例的名称,或者为空字符串 ("")(如果该类别包含单个实例)。
二 示例方法:
需要引用命名空间

using  System.Diagnostics;
using  System.Threading;
using  System.Collections;

1 获取性能计数器类别列表
虽然系统中有很多可用的计数器类别,但与之交互最频繁的可能是“Cache”(缓存)、“Memory”(内存)、
“Objects”(对象)

、“PhysicalDisk”(物理磁盘)、“Process”(进程)、“Processor”(处理器)、
“Server”(服务器)、“System”(系统)和“Thread”(线程)等类别

         public   static   void  GetCategoryNameList()
        {
            PerformanceCounterCategory[] myCat2;
            myCat2  =  PerformanceCounterCategory.GetCategories();
             for  ( int  i  =   0 ; i  <  myCat2.Length; i ++ )
            {
                Console.WriteLine(myCat2[i].CategoryName.ToString());
            }
        }

2 获取性能计数器类别下的实例的名称实例下的性能计数器的名称

         public   static   void  GetInstanceNameListANDCounterNameList( string  CategoryName)
        {
             string [] instanceNames;
            ArrayList counters  =   new  ArrayList();
            PerformanceCounterCategory mycat  =   new  PerformanceCounterCategory(CategoryName);
             try
            {
                instanceNames  =  mycat.GetInstanceNames();
                 if  (instanceNames.Length  ==   0 )
                {
                    counters.AddRange(mycat.GetCounters());
                }
                 else
                {
                     for  ( int  i  =   0 ; i  <  instanceNames.Length; i ++ )
                    {
                        counters.AddRange(mycat.GetCounters(instanceNames[i]));
                    }
    &
U871客户端主机**通常不需要特意开启“Performance Counter DLL Host”(性能计数器DLL宿主)服务**,除非遇到与性能监控相关的特定错误(如日志中明确提示性能计数器初始化失败)。以下是详细分析和建议: --- ### **1. Performance Counter DLL Host的作用** - **功能**:该服务(`PerfHost.exe`)用于托管第三方性能计数器DLL,允许系统收集非默认的性能数据(如某些硬件或软件的自定义计数器)。 - **默认状态**:在Windows中,此服务通常为**手动启动**,且大多数情况下无需运行,除非有应用程序显式依赖它。 --- ### **2. U871是否依赖此服务?** - **官方要求**:用友U871的官方文档和安装指南中,**未提及必须开启此服务**。其核心依赖的服务包括: - `U8ApplicationServer`(应用服务) - `SQL Server`(数据库服务) - `Windows Firewall`(若需放行端口) - **可能关联的场景**: - 若U871的某些模块(如性能分析工具)尝试读取自定义性能计数器,且系统未正确注册相关DLL时,可能会报错。 - 但此类情况极少见,且错误通常会明确指向性能计数器问题。 --- ### **3. 何时需要检查此服务?** 若U871客户端出现以下情况,可排查此服务: 1. **日志中有性能计数器错误** - 例如:`"Failed to initialize performance counters"` 或 `"PerfLib 2.0 error"`。 2. **系统监控功能异常** - 如U871自带的性能分析工具无法生成数据。 3. **第三方插件依赖** - 若安装了与性能监控相关的插件(如硬件监控工具),可能需要此服务。 --- ### **4. 操作建议** #### **(1)无需主动开启的情况** - 若U871仅用于日常业务操作(如制单、查询),且无性能分析需求,**保持此服务关闭**(手动或禁用状态)即可。 - 关闭此服务可减少系统资源占用,避免潜在的安全风险(因性能计数器DLL可能被恶意利用)。 #### **(2)需开启的情况** - **步骤**: 1. 按 `Win + R`,输入 `services.msc`,找到 **“Performance Counter DLL Host”**。 2. 右键选择 **“属性”**,将启动类型改为 **“手动”**(推荐)或 **“自动”**。 3. 点击 **“启动”** 按钮,应用更改。 - **验证**: - 重启U871客户端,观察是否解决相关错误。 - 通过命令提示符检查性能计数器状态: ```cmd lodctr /q ``` #### **(3)替代方案** - 若仅需解决U871连接问题,优先检查: - 网络连通性(如`ping 192.168.1.254`和`telnet 192.168.1.254 11520`)。 - 服务端U871服务状态(如`U8ApplicationServer`是否运行)。 - 客户端配置文件(如`u8config.ini`中的服务器地址和端口)。 --- ### **5. 示例:检查性能计数器状态** ```cmd :: 查看性能计数器是否已加载 lodctr /q :: 重建性能计数器库(若损坏) lodctr /r ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值