友链提交
请认真填写以下信息,谢谢!

博客信息

(请填写完整的网址,例如:https://www.example.com)
(贵站展示本站链接的页面地址,一般是友链页面,填写后将自动验证友链关系有效性)
(用于抓取文章)
(用于接收通知)

解决ServerAgent-2.2.3闪退问题

  1. 首页
  2. 学习记录
  3. 解决ServerAgent-2.2.3闪退问题

问题背景

最近在使用 JMeter 进行性能测试时,需要使用 ServerAgent-2.2.3 来监控服务器资源。但每次运行脚本时,ServerAgent 就会闪退,无法正常工作。

查看错误日志后,经过一番排查和尝试,我终于找到了解决方案。

今天就把完整的排查过程和三种解决方法分享给大家,希望能帮助到遇到同样问题的朋友。

问题描述

错误现象

在使用 JMeter 的 ServerAgent-2.2.3 监控服务器时:

  • 运行脚本时 ServerAgent 立即闪退
  • 无法正常启动和监控

错误日志

查看错误日志文件,发现以下关键信息:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000010014ed4, pid=11524, tid=11388
#
# JRE version: Java(TM) SE Runtime Environment (17.0.6+9) (build 17.0.6+9-LTS-190)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0.6+9-LTS-190, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C  [sigar-amd64-winnt.dll+0x14ed4]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

错误分析

关键信息解读:

  1. EXCEPTION_ACCESS_VIOLATION (0xc0000005)

    • 内存访问冲突错误
    • 程序试图访问无效的内存地址
  2. sigar-amd64-winnt.dll+0x14ed4

    • 错误发生在 sigar-amd64-winnt.dll 这个动态链接库中
    • 这是 SIGAR(System Information Gatherer And Reporter)库的 Windows 版本
  3. JRE version: Java 17.0.6

    • 使用的是 Java 17 版本
    • ServerAgent-2.2.3 可能不兼容

问题原因

经过分析,问题的根本原因是:ServerAgent-2.2.3 与 JDK 版本不匹配

具体原因:

  1. SIGAR 库版本过旧

    • ServerAgent-2.2.3 发布时使用的是旧版本的 SIGAR 库
    • 旧版本的 sigar-amd64-winnt.dll 不兼容新的 JDK
  2. JDK 版本过新

    • 使用 JDK 17 或更高版本
    • 新版 JDK 对本地库的加载和执行有更严格的要求
    • 导致与旧版 SIGAR 库冲突
  3. log4j 版本冲突

    • ServerAgent 自带的 log4j 版本过旧
    • 与 JDK 17 的模块化系统不兼容

解决方案

我找到了三种有效的解决方法,按推荐程度排序:

方法一:替换 sigar-amd64-winnt.dll 文件(推荐)

这是最简单直接的解决方法。

步骤 1:下载兼容的 DLL 文件

下载地址:https://files.cnblogs.com/files/5ishare/sigar-amd64-winnt.rar

步骤 2:备份原文件

进入 ServerAgent 安装目录,找到 lib 文件夹:

D:\Program Files\ServerAgent-2.2.3\lib\

备份原有的 sigar-amd64-winnt.dll 文件:

  • 重命名为 sigar-amd64-winnt.dll.bak
  • 或复制到其他位置

步骤 3:替换文件

  • 解压下载的压缩包
  • 将新的 sigar-amd64-winnt.dll 复制到 lib 目录
  • 替换原有文件

方法二:更新 log4j 相关 jar 包

这种方法通过更新日志库来解决兼容性问题。

步骤 1:删除旧版 log4j

在 ServerAgent 安装目录的 lib 文件夹中:

  • 找到 log4j.jar 文件
  • 删除或重命名备份

步骤 2:下载新版 jar 包

需要下载以下三个 jar 包:

  1. log4j-1.2.12.jar

  2. slf4j-api-1.7.5.jar

  3. slf4j-log4j12-1.7.21.jar

步骤 3:添加到 lib 目录

将下载的三个 jar 包复制到 lib 文件夹中。

方法三:使用旧版 JRE(最稳定)

这种方法通过降级 Java 版本来确保兼容性。

步骤 1:下载旧版 JRE

下载 Java 8 或更低版本的 JRE:

步骤 2:创建 jre 文件夹

在 ServerAgent 安装目录下新建一个文件夹,名为 jre

D:\Program Files\ServerAgent-2.2.3\jre\

步骤 3:解压 JRE

将下载的 JRE 解压到 jre 文件夹中。

步骤 4:修改启动脚本

找到 startAgent.bat 文件(Windows 端),右键编辑:

  • Windows 端:startAgent.bat
  • Linux 端:startAgent.sh

@echo off 下一行添加:

@echo off
cd /d "D:\Program Files\ServerAgent-2.2.3\jre\bin"

希望这篇详细的解决方案能帮助到你!如果你有其他问题或更好的解决方法,欢迎在评论区交流。


用键盘敲击出的不只是字符,更是一段段生活的剪影、一个个心底的梦想。希望我的文字能像一束光,在您阅读的瞬间,照亮某个角落,带来一丝温暖与共鸣。

浮生闲记

intj 建筑师

站长

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

欢迎来到浮生闲记的站点,为您导航全站动态

41 文章数
2 分类数
32 评论数
46标签数