由于Access Denied错误,JMeter无法为每个进程收集CPU

时间:2018-04-03 14:42:13

标签: jmeter windows-server-2012-r2

我在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?

1 个答案:

答案 0 :(得分:1)

您可以通过使用提升的权限运行Server Agent来解决此问题,可以通过两种方式完成:

  1. 使用psexec工具,run a process with SYSTEM account rights

    PSExec become system

  2. 使用Task Scheduler您还可以使用最高权限启动流程

    JMeter Task Scheduler

  3. 鉴于您运行具有提升权限的服务器代理 - 您应该能够收集IIS进程的CPU指标。

    有关使用PerfMon指标收集器和服务器代理的详细信息,请参阅How to Monitor Your Server Health & Performance During a JMeter Load Test文章。