问题:
最近需要做一个长时间的压测,大致需求是每 5s 并发 1w 个请求持续 48h,目前是通过 Python locust 分布式实现的。在压测前 15min 左右,locust 收集的 RPS 和 RT 波动较大并且有较多的 504、502 错误产生,后续基本趋于稳定。
locust 启动时孵化率是 200/s,期间我看了下荷载机的 CPU,每个核心的占用基本上不超过 70%
请问下这种情况的原因一般是什么呢?
环境:
后台:golang+MongoDB
服务配置:5*(4C8G)
荷载机配置:16C 32G文章源自玩技e族-https://www.playezu.com/186843.html南京软件测试文章源自玩技e族-https://www.playezu.com/186843.html文章源自玩技e族-https://www.playezu.com/186843.html
未知地区 1F
前面波动的报错具体是什么?还有你的脚本能保证一直稳定的每 5 秒并发一万个请求嘛?先找找自身脚本有没问题,再看报错原因。后续稳定后是都一直请求成功么。还有压力测试时要注意热机,模拟真实场景,不能拿到脚本就开跑。你压测时开始是有请求拥塞的,所以服务器的压力比较大会有波动去处理这些请求,当 TPS 稳定后就会像你后面的一样了,所以这样设计脚本就很有可能出现这种情况。你也可以设定稳定的 QPS 去压测负载机就一台机器吗,兄弟对的,locust 这个工具分布式主要看 CPU 核心数,目前这个负载机配置是够的我还不知道有热机的操作,谢谢提醒。瞎猜,像是前期都没命中缓存,所以性能消耗非常大也慢;后期都命中缓存,就稳定多了。
不知道你具体的脚本和报错,没法给更多推论了。感觉像没中缓存,后面把缓存都命中了,才呈现出比较稳定的趋势图。可以问下开发,参考下我类似情况的图,前期是波动的,后期平稳@ 陈恒捷 , @oyoyo 阿里云这个统计有点谜
总共跑了两天 你这个是啥?缓存命中率?
我只是猜测而已哈,具体你得看接口逻辑才知道为啥前期性能比较差,不一定就是缓存的问题。