压测报告首页写着 TPS 12000,评审通过。翻到最后一页才发现 Errors 18%,大部分是 500 和超时,聚合报告里错误率那一列被隐藏了。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

cat result.jtl | awk -F, 'NR>1{print $4}' | sort | uniq -c | sort -rn | head
awk -F, 'NR>1{if($4!="200") e++} END{print "error_rate", e/(NR-1)}' result.jtl

脚本只统计成功的响应时间,失败请求直接跳过,平均值反而更好看。服务端限流和连接超时都被算成业务失败,报告里没有分类。压测结论按 TPS 单指标下判断,错误率没进验收标准。这一点先确认清楚,后面就不用反复试。

「错误率统计缺失」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

改完隔一天再看一次,当场正常不代表能稳住。

具体做法是,把成功率作为第一指标 TPS 放第二;按响应码分类统计 区分 4xx 5xx 和超时;设置验收线 成功率低于 99.5% 的结论不采纳;重跑一轮把两个指标一起贴出来。

改完照着核一遍,报告里同时出现 TPS 和成功率,重跑后两者都在验收线内。

作者 9823189