问答 性能指标波动分析

能吃就多吃点 · 2021年09月29日 · 最后由 陈恒捷 回复于 2021年10月08日 · 4155 次阅读

问题:

最近需要做一个长时间的压测,大致需求是每 5s 并发 1w 个请求持续 48h,目前是通过 Python locust 分布式实现的。在压测前 15min 左右,locust 收集的 RPS 和 RT 波动较大并且有较多的 504、502 错误产生,后续基本趋于稳定。


locust 启动时孵化率是 200/s,期间我看了下荷载机的 CPU,每个核心的占用基本上不超过 70%
请问下这种情况的原因一般是什么呢?

环境:

后台:golang+MongoDB
服务配置:5*(4C8G)
荷载机配置:16C 32G

共收到 9 条回复 时间 点赞

前面波动的报错具体是什么?还有你的脚本能保证一直稳定的每 5 秒并发一万个请求嘛?先找找自身脚本有没问题,再看报错原因。后续稳定后是都一直请求成功么。还有压力测试时要注意热机,模拟真实场景,不能拿到脚本就开跑。你压测时开始是有请求拥塞的,所以服务器的压力比较大会有波动去处理这些请求,当 TPS 稳定后就会像你后面的一样了,所以这样设计脚本就很有可能出现这种情况。你也可以设定稳定的 QPS 去压测

负载机就一台机器吗,兄弟

fer 回复

对的,locust 这个工具分布式主要看 CPU 核心数,目前这个负载机配置是够的

小人物 回复

我还不知道有热机的操作,谢谢提醒。

瞎猜,像是前期都没命中缓存,所以性能消耗非常大也慢;后期都命中缓存,就稳定多了。

不知道你具体的脚本和报错,没法给更多推论了。

感觉像没中缓存,后面把缓存都命中了,才呈现出比较稳定的趋势图。可以问下开发,参考下我类似情况的图,前期是波动的,后期平稳

@ 陈恒捷 , @oyoyo 阿里云这个统计有点谜

8楼 已删除


总共跑了两天

你这个是啥?缓存命中率?

我只是猜测而已哈,具体你得看接口逻辑才知道为啥前期性能比较差,不一定就是缓存的问题。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册