测试环境 2 核 4G 压出 2000 QPS,按 4 倍换算成线上 8 核 8000 QPS 写进容量表。线上真实压测只有 5200,GC 时间占比从 3% 涨到 18%。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,QPS 和核数不是线性关系,线程一多锁竞争和 GC 都会吃掉增量。测试环境没有接真实中间件,Redis 和数据库都是本机,网络延迟也不一样。换算系数是拍的,没有任何压测数据支撑。

「环境规格差异」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。改完顺手把文档补一句,省得下次自己重新推一遍。

nproc && free -g
jstat -gcutil 1 1000 60 | awk '{print $1,$3,$4,$6}'

监控和日志的时间要对上,时区不一致会多绕很大一圈。

具体做法是,容量数据只在同规格环境里测 别跨规格换算;线上做一次灰度压测 用真实链路拿数字;把 GC 时间和锁等待一起记录 解释非线性部分;容量表标注测试环境和日期 避免被当成永久结论。

最后用这个标准收尾,容量表里的数字来自同规格压测,灰度实测与预估偏差在 15% 以内。

作者 9823189