问题描述
我们正在使用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]
#
以下是到目前为止尝试过的解决方案,没有运气。
-
PerMon在服务器上运行,并捕获cpu和内存使用情况。
-
端口或网络流量没有问题。服务器代理正在两台服务器的端口4444上收到请求。崩溃后,JMeter显示超时错误,因为它无法访问服务器代理。
-
我们尝试通过将DEP设置为-仅对必需的Windows程序和服务打开DEP 来禁用DEP
-
以Admin特权运行ServerAgent无效。它仍然崩溃。
-
在兼容模式下运行ServerAgent无效。它仍然崩溃。
解决方法
这听起来像是SIGAR bug,但不幸的是您无能为力(除非您想调查sigar-amd64-winnt.dll
的问题,实施解决方案,将其贡献给SIGAR上游并更新JMeter PerfMon固定版本的插件)
同时,您可以考虑将SSHMon Samples Collector作为解决方法,请查看How to Monitor Server Resource Utilization with JMeter’s SSHMon Listener文章以了解更多详细信息