locust 使用的疑問

重来看雨發表於2020-06-30

背景

今天使用 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 的文章,可以百萬併發哦。。是我使用方式不對?請大佬們指點指點。

相關文章