ids.csv jmeter -t plan.jmx -Jthreads=200 redis-cli info stats | grep keyspace_hits
压测跑出两万 QPS,上线后同样的机器只能撑三千,翻脚本才发现所有请求用的都是同一个商品 ID。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:参数全一样,请求打在同一个缓存键上,后面的几乎全命中本地缓存,数据库和下游服务根本没被压到,测出来的只是缓存层的吞吐,和真实流量结构没关系。
这次卡住的地方就在「压测参数固定」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。同一份配置存在多处的,先确认改的是被加载的那一份。
新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
处理上按这个顺序:参数从数据文件里随机取并打散热点;压测前清缓存或按真实命中率配置;把下游调用次数也纳入观察。
确认没问题再收工,压测 QPS 落到真实量级,缓存命中率和线上接近。
