JMeter在CentOS上的日志分析技巧
导读:JMeter在CentOS上的日志分析技巧 一 日志体系与采集要点 核心日志位置与用途:JMeter 运行日志位于 ${JMETER_HOME}/bin/jmeter.log,用于定位 Java 异常、端口冲突、脚本语法错误 等问题;压测...
JMeter在CentOS上的日志分析技巧
一 日志体系与采集要点
- 核心日志位置与用途:JMeter 运行日志位于 ${
JMETER_HOME}
/bin/jmeter.log,用于定位 Java 异常、端口冲突、脚本语法错误 等问题;压测结果建议始终输出 JTL(CSV/XML),便于事后统计分析。运行命令示例:
jmeter -n -t testplan.jmx -l results.jtl。需要更详细的请求/响应信息时,在 user.properties 增加保存项(如jmeter.save.saveservice.response_data=true、jmeter.save.saveservice.samplerData=true、jmeter.save.saveservice.requestHeaders=true、jmeter.save.services.responseHeaders=true、jmeter.save.saveservice.url=true、jmeter.save.saveservice.output_format=xml)。日志级别可在 bin/log4j2.xml 的 Root level 永久调整,或在运行时通过-Jlog_level.jmeter=DEBUG临时提升。为便于拆分错误日志,可用-j /path/to/jmeter_error.log指定 JMeter 运行日志输出文件。
二 命令行快速定位与统计
- 实时查看与关键字过滤:
tail -f ${ JMETER_HOME} /bin/jmeter.log;结合grep过滤错误与关键事件,例如:grep -i "error\|exception" jmeter.log、grep "All thread groups have been started" jmeter.log、grep "Shutdown hook ended" jmeter.log。如需按时间段筛选,可配合sed/awk处理时间戳。 - 关键事件时间线抽取:用
grep抽取测试起止与关键业务日志,再用date转换为时间戳计算时长。例如:start=$(date -d "$(grep 'All thread groups have been started' jmeter.log | head -1 | awk '{ print $1,$2} ' | cut -d',' -f1)" +%s);end=$(date -d "$(grep 'Shutdown hook ended' jmeter.log | tail -1 | awk '{ print $1,$2} ' | cut -d',' -f1)" +%s);echo "duration=$((end-start))s"。 - 简易成功率与 QPS 统计:基于自定义业务日志(见第三部分)统计
success、FailureMessage等关键字数量,计算 错误率=失败/请求总数、QPS=请求总数/测试时长、吞吐量=成功数/成功运行时长。示例:success=$(grep -c "place order success" jmeter.log);failure=$(grep -c "FailureMessage" jmeter.log);requests=$((success+failure));error_rate=$(echo "scale=2; $failure/$requests*100" | bc);qps=$(echo "scale=2; $requests/$duration" | bc)。以上命令可封装为 Shell 脚本,形成一键分析工具。
三 自定义业务日志与精准度量
- 在采样器下添加 BeanShell 断言 输出结构化业务日志,便于在无 GUI 的 CentOS 环境中快速定位问题并统计业务指标(如 orderId、业务状态码)。示例代码:
运行后可在import org.apache.log4j.Logger; String result = prev.getResponseDataAsString(); String code = vars.get("code"); String orderId = vars.get("orderId"); if ("0".equals(code)) { log.info("place order success, orderId=" + orderId); } else { Failure = true; log.error("FailureMessage: " + result); }jmeter.log(或-j指定的错误日志)中检索success、FailureMessage等关键字,实现业务成功率、错误原因与单号追踪的精确统计。
四 分布式与系统层面排查联动
- 分布式压测日志与连通性:Master/Slave 版本需一致;在 jmeter.properties 配置
remote_hosts=指定节点;Slave 启动时绑定本机 IP:RMI_HOST_DEF=-Djava.rmi.server.hostname=< SLAVE_IP> ./jmeter-server;测试环境可临时关闭 SSL:server.rmi.ssl.disable=true;必要时自定义端口(如server_port=1567)并放行防火墙:firewall-cmd --add-port=1099/tcp --permanent & & firewall-cmd --reload。分布式场景下,结合各节点 jmeter.log 与网络可达性排查“卡在 waiting for possible shutdown message”“结果未返回”等问题。 - 系统日志联动分析:当 JMeter 报 Address already in use、Connection refused 或偶发网络异常时,联动查看 CentOS 系统日志。
journalctl -u firewalld检查防火墙阻断;journalctl --since "2025-12-29 10:00:00" -f实时跟踪相关服务日志;必要时检查端口占用netstat -lnp | grep < 端口>并结合grep "error" /var/log/messages。高并发短连接压测前,可适当优化系统网络参数(如扩大本地端口范围、开启端口复用、缩短tcp_fin_timeout),以减少端口耗尽与连接失败对日志的干扰。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JMeter在CentOS上的日志分析技巧
本文地址: https://pptw.com/jishu/783549.html
