性能测试工具 locust 使用的疑问

重来看雨 · 2020年06月30日 · 最后由 重来看雨 回复于 2023年03月15日 · 2558 次阅读

背景

今天使用 locust 分布式压测一个 grpc 协议的服务 (第一次使用 locust 咳咳),但压测过程中,发现 locust 无法通过增加并发而提高被压服务的 cpu 使用率,QPS 等。后续增加了 3 台压测客户端机器,才把服务端的 cpu 使用率压满,这明显不科学啊。。

服务器信息

1,服务端 8 核 16G
2,客户端 8 核 16G

操作过程

场景 1,使用 700 并发,7 个 nodes 执行

locust -f grpc_test.py --master --headless --master-bind-host xxx --expect-workers=7 -u 700 -t 180s -r 700
被压服务 cpu 使用率为 280% 左右

locust 进程的单核 cpu 使用率为 40% 左右

QPS:9703.14,平均耗时:2ms

场景 2, 使用 1400 并发,7 个 nodes 执行

locust -f grpc_test.py --master --headless --master-bind-host xxx --expect-workers=7 -u 1400 -t 180s -r 700
被压服务 cpu 使用率为 280% 左右

locust 进程的单核 cpu 使用率为 40% 左右

QPS: 9514.82,平均耗时:2ms

场景 3, 使用 1400 并发,14 个 nodes 执行 (压测客户端增加了一台 8 核机器,承担另外 7 个 nodes)

locust -f grpc_test.py --master --headless --master-bind-host xxx --expect-workers=14 -u 1400 -t 180s -r 700
被压服务 cpu 使用率为 550% 左右

locust 1 进程的单核 cpu 使用率为 35% 左右

QPS:17757.96,平均耗时:2ms

分析与疑问

1,在场景 1 的基础上,场景 2 增加了一倍并发数,但服务端的 cpu 使用率没有提高,QPS 没有提高,而且压测客户端的负载和 cpu 使用率还是很健康状态。
2,在场景 2 的基础上,增加了一台压测服务器,分担了其中 7 个 nodes,压力提高符合预期。
3,为什么增加并发数不能提高压力呢?但从网上看到 locust 的文章,可以百万并发哦。。是我使用方式不对?请大佬们指点指点。

共收到 7 条回复 时间 点赞
rihkddd 回复

wrk 支持不了非 http 协议。

场景 2 和 3 是在同一个 VPS 吗,我之前也遇到过加压后,服务端 RT 不变的情况下,TPS 上不去,后来发现是施压侧带宽被占满导致实际压力根本没发出去,增加带宽后问题解决

11111 回复

是一样的,并且客户端与服务端还是内网来的

qps 到几千的规模,考虑用 wrk 吧。

重来看雨 回复

问题应该是出现在施压侧,建议多检查下网络 IO、磁盘 IO 等,还有是否系统的文件句柄设置的过小

我能有相同的问题,能帮忙看看嘛

yankee 回复

这个应该 locust python 客户端有关系,后面换了 boomer。

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