JMeter在CentOS上的常见问题及解决方法
JMeter在CentOS上的常见问题与解决方案
一 安装与权限问题
-
执行命令提示:-bash: /root/apache-jmeter-5.5/bin/jmeter: Permission denied
原因:JMeter脚本无执行权限。
解决:为可执行文件授权并验证版本。
命令:
chmod 755 /root/apache-jmeter-5.5/bin/jmeter
chmod -R 755 /root/apache-jmeter-5.5
jmeter -v -
运行GUI时报错:java.lang.UnsatisfiedLinkError: … libawt_xawt.so: libXtst.so.6: 无法打开共享对象文件
原因:缺少X11相关依赖库(常见于JDK 11)。
解决:安装缺失依赖(以CentOS 7为例)。
命令:
yum install -y libXtst libXrender libXrandr libXi libXcursor libXinerama alsa-lib
二 分布式测试连接与端口
-
报错:java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
原因:启用RMI SSL但缺少密钥库。
解决:在jmeter.properties中关闭RMI SSL(测试环境常用)。
配置:server.rmi.ssl.disable=true -
报错:Error in rconfigure() method java.rmi.ConnectException: Connection refused / timeout
原因:常见于双网卡/多网卡导致RMI绑定到回环地址或防火墙阻断。
解决:- 在Slave上显式指定RMI主机名:在jmeter-server脚本顶部加入
RMI_HOST_DEF=-Djava.rmi.server.hostname=本机IP - 在Master的jmeter.properties设置
remote_hosts=192.168.1.101:1099,192.168.1.102:1099 - 开放端口(若启用防火墙):
firewall-cmd --zone=public --add-port=1099/tcp --permanent
firewall-cmd --reload - 必要时自定义端口:
server_port=1567
server.rmi.localport=1567
并在防火墙放行对应端口
- 在Slave上显式指定RMI主机名:在jmeter-server脚本顶部加入
-
Master收不到Slave上报
原因:hostname与**/etc/hosts映射不一致。
解决:确保/etc/hosts中主机名解析到正确的本机IP**。
三 资源与性能瓶颈
-
报错:OutOfMemoryError / OOM
原因:JMeter默认堆内存过小。
解决:调整JMeter启动脚本的JVM堆(不超过物理内存的2/3)。
示例(在jmeter或jmeter.sh中设置):
JVM_ARGS=“-Xms2g -Xmx8g -XX:MaxMetaspaceSize=512m” -
高并发下出现SocketException / 连接失败
原因:系统端口与文件句柄限制过低。
解决:- 扩大本地端口范围:
echo “net.ipv4.ip_local_port_range = 1024 65000” > > /etc/sysctl.conf
sysctl -p - 提升文件句柄与进程数:
ulimit -n 102400
在**/etc/security/limits.conf**添加:- soft nofile 65536
- hard nofile 65536
- soft nproc 65565
- hard nproc 65565
- 可选TCP优化(示例):
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
- 扩大本地端口范围:
四 测试结果不准确与报告生成
-
分布式结果不一致或数据错位
原因:参数化文件未在各Slave保持一致或TCPClient classname配置不当。
解决:- 将参数文件同步到所有Slave,路径与内容保持一致。
- TCP取样器按协议设置:
- 文本:org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl
- 二进制:org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl
- 十六进制发送需设置正确的结束符,避免一直等待。
-
生成HTML报告报错:Mismatch between expected number of columns
原因:压测异常终止导致JTL最后一行不完整。
解决:删除JTL末尾的不完整行后重新生成报告。
命令:
tail -n +1 your.jtl | sed -e ‘$d’ > your_fixed.jtl
jmeter -g your_fixed.jtl -e -o /path/to/report
五 快速排查清单
- 核对Java与JMeter版本匹配(建议JDK 8/11/17,各节点版本一致)。
- 非GUI执行命令范式:
jmeter -n -t test.jmx -l result.jtl -e -o /path/to/report - 分布式执行:
jmeter -n -t test.jmx -R 192.168.1.101:1099,192.168.1.102:1099 -l result.jtl -e -o /path/to/report - 日志定位:tail -f jmeter.log 与查看JTL错误行。
- 环境一致性:JMeter版本、插件、脚本与参数文件在各节点保持一致。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JMeter在CentOS上的常见问题及解决方法
本文地址: https://pptw.com/jishu/756490.html
