我在JMeter测试中设置了服务器监控。该设置与此stackoverflow answer中的设置非常相似。当我在没有指定进程的情况下收集CPU或内存时,一切都按预期工作。我看到图表的指标正确。
但是,当我尝试收集每个进程的CPU时,例如使用度量参数pid=8948:percent
,图表为空,没有收集样本,我在受监视的服务器上看到以下异常:
ERROR 2018-04-03 13:17:14.607 [kg.apc.p] (): Error getting metric
org.hyperic.sigar.SigarPermissionDeniedException: Access is denied.
: 8948
at org.hyperic.sigar.SigarProxyCache.invoke(SigarProxyCache.java:218)
at com.sun.proxy.$Proxy0.getProcCpu(Unknown Source)
at kg.apc.perfmon.metrics.CPUProcMetric.getValue(CPUProcMetric.java:35)
at kg.apc.perfmon.PerfMonMetricGetter.getMetricsLine(PerfMonMetricGetter
.java:114)
at kg.apc.perfmon.PerfMonWorker.processSenders(PerfMonWorker.java:280)
at kg.apc.perfmon.PerfMonWorker.run(PerfMonWorker.java:243)
at java.lang.Thread.run(Unknown Source)
我尝试按名称获取进程,但异常是相同的。
我运行startAgent.bat --sysinfo
实际上用户对我要监控的进程w3wp.exe(8948)没有任何权限(用户没有“看到”这个过程)。
documentation明确声明我不需要管理员权限 在应用程序服务器上(Windows Server 2012 R2)。用户已拥有性能监控用户和性能日志用户角色。
那么如何在不是应用服务器管理员的用户的JMeter测试中监控每个进程的CPU?
答案 0 :(得分:1)
您可以通过使用提升的权限运行Server Agent来解决此问题,可以通过两种方式完成:
使用Task Scheduler您还可以使用最高权限启动流程
鉴于您运行具有提升权限的服务器代理 - 您应该能够收集IIS进程的CPU指标。
有关使用PerfMon指标收集器和服务器代理的详细信息,请参阅How to Monitor Your Server Health & Performance During a JMeter Load Test文章。