如何将Perfmon中.NET CLR名称与Dynamics NAV Windows服务关联?
我之前维护多实例Dynamics NAV环境时,也碰到过这个头疼的问题——Perfmon里的.NET CLR Memory计数器总是显示Microsoft.Dynamics.NAV.Server#1这类带编号的名称,根本没法直接对应到具体的服务实例。下面分享几个亲测有效的解决方法:
方法一:通过PID关联(最直接快速)
Perfmon里的CLR实例其实和进程ID(PID)一一对应,我们可以先找到目标服务的PID,再匹配到Perfmon的实例:
- 打开PowerShell,执行命令获取目标服务的PID:
输出里的Get-Service "Microsoft.Dynamics.NAV.Server$MyNAVInstance"Id字段就是该服务对应的进程PID。 - 打开Perfmon,添加
.NET CLR Memory计数器时,在「实例」列表里,每个实例的括号里会标注对应的PID(比如Microsoft.Dynamics.NAV.Server#1 (1234))。把这个PID和步骤1里拿到的PID对比,就能精准匹配到对应的CLR实例。提示:如果Perfmon没显示PID,右键点击实例列表,选择「添加列」,勾选「PID」即可显示。
方法二:用任务管理器/Process Explorer确认进程归属
如果想更直观地看到进程和服务的关联,可以用系统工具辅助:
- 任务管理器:切换到「详细信息」标签,找到所有
Microsoft.Dynamics.NAV.Server.exe进程。右键表头选择「选择列」,添加「命令行」列——命令行里会包含服务实例名(比如-service "Microsoft.Dynamics.NAV.Server$MyNAVInstance"),这样就能把PID和服务名直接对应,再回到Perfmon匹配CLR实例。 - Process Explorer:这个Sysinternals工具能直接显示进程关联的服务。打开后找到目标
Microsoft.Dynamics.NAV.Server.exe进程,右键选择「属性」,切换到「Services」标签,就能看到该进程对应的服务名称,同时记录PID,再对应Perfmon的CLR实例。
方法三:修改配置让CLR实例名直接显示服务名(一劳永逸)
如果需要长期监控,推荐修改NAV服务器的配置文件,让Perfmon里的CLR实例直接显示服务名称:
- 找到NAV服务的配置文件,默认路径是:
C:\Program Files\Microsoft Dynamics NAV\<你的NAV版本号>\Service\Microsoft.Dynamics.Nav.Server.exe.config - 打开配置文件,找到
<runtime>节点(如果没有就新建一个),添加performanceCounters配置:
把<runtime> <!-- 保留原有配置,添加下面这行 --> <performanceCounters instanceName="Microsoft.Dynamics.NAV.Server$MyNAVInstance"/> </runtime>MyNAVInstance替换成你的实际服务实例名称。 - 重启对应的Dynamics NAV服务,之后再打开Perfmon,
.NET CLR Memory下的实例就会直接显示你设置的服务名称,不用再手动匹配了。
注意:如果有多个NAV实例,每个实例的配置文件都需要单独修改;修改前记得备份原配置文件,避免配置错误导致服务无法启动。
内容的提问来源于stack exchange,提问作者CloudViking86
相关产品推荐
相关产品推荐

