JMeter在CentOS上的日志分析技巧
一 日志体系与采集要点
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"。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 脚本,形成一键分析工具。三 自定义业务日志与精准度量
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 等关键字,实现业务成功率、错误原因与单号追踪的精确统计。四 分布式与系统层面排查联动
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”“结果未返回”等问题。journalctl -u firewalld 检查防火墙阻断;journalctl --since "2025-12-29 10:00:00" -f 实时跟踪相关服务日志;必要时检查端口占用 netstat -lnp | grep <端口> 并结合 grep "error" /var/log/messages。高并发短连接压测前,可适当优化系统网络参数(如扩大本地端口范围、开启端口复用、缩短 tcp_fin_timeout),以减少端口耗尽与连接失败对日志的干扰。