jMeter ServerAgent在Windows Server 2016中崩溃

问题描述

我们正在使用JMeter和Perfmon插件加载测试.NET应用程序。我们正在运行Perfmon ServerAgent来收集Windows Server 2008 R2(用于App)和Windows Server 2016 R2(用于sql Server 2016)中的cpu和内存指标。 ServerAgent在2008 R2中工作正常,但JMeter启动后,2016 R2中的ServerAgent崩溃。两台服务器都运行相同版本的JRE 8。

崩溃日志:

#

# A Fatal error has been detected by the Java Runtime Environment:

#

#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000010014ed4,pid=6340,tid=0x000000000000214c

#

# JRE version: Java(TM) SE Runtime Environment (8.0_261-b12) (build 1.8.0_261-b12)

# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.261-b12 mixed mode windows-amd64 compressed oops)

# Problematic frame:

# C  [sigar-amd64-winnt.dll+0x14ed4]

#

以下是到目前为止尝试过的解决方案,没有运气。

  1. PerMon在服务器上运行,并捕获cpu和内存使用情况。

  2. 端口或网络流量没有问题。服务器代理正在两台服务器的端口4444上收到请求。崩溃后,JMeter显示超时错误,因为它无法访问服务器代理。

  3. 我们尝试通过将DEP设置为-仅对必需的Windows程序和服务打开DEP 来禁用DEP

  4. 以Admin特权运行ServerAgent无效。它仍然崩溃。

  5. 在兼容模式下运行ServerAgent无效。它仍然崩溃。

解决方法

这听起来像是SIGAR bug,但不幸的是您无能为力(除非您想调查sigar-amd64-winnt.dll的问题,实施解决方案,将其贡献给SIGAR上游并更新JMeter PerfMon固定版本的插件)

同时,您可以考虑将SSHMon Samples Collector作为解决方法,请查看How to Monitor Server Resource Utilization with JMeter’s SSHMon Listener文章以了解更多详细信息