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

重来看雨 · 2020年06月30日 · 最后由 solxnp 回复于 2020年07月02日 · 153 次阅读

背景

今天使用 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 的文章,可以百万并发哦。。是我使用方式不对?请大佬们指点指点。

共收到 5 条回复 时间 点赞

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

solxnp 回复

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

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

rihkddd 回复

wrk 支持不了非 http 协议。

重来看雨 回复

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

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