locust压测实例
官网
https://docs.locust.io/en/stable/quickstart.html
安装
pip install locust
编写测试文件locustfile.py
from locust import HttpUser, task
class HelloWorldUser(HttpUser):
@task
def hello_world(self):
self.client.get("/hello")
self.client.get("/world")
启动
locust
-P 更换端口
-H 更换host
-F XXX.py 指定文件启动
访问web UI
默认:localhost:8089
PS:记一次实测
接口压力测试
接口单个请求处理时长1.04s、gunicorn worker=4
1000 Number of users (peak concurrency)
1000 Spawn rate (users started/second)
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 26337 | 0 | 4900 | 8500 | 8600 | 6051 | 1038 | 16601 | 648 | 163.6 | 0 |
Aggregated | 26337 | 0 | 4900 | 8500 | 8600 | 6051 | 1038 | 16601 | 648 | 163.6 | 0 |
500 Number of users (peak concurrency)
500 Spawn rate (users started/second)
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 11663 | 0 | 2500 | 3900 | 4400 | 3050 | 1040 | 7246 | 648 | 162.7 | 0 |
Aggregated | 11663 | 0 | 2500 | 3900 | 4400 | 3050 | 1040 | 7246 | 648 | 162.7 | 0 |
取消数据库链接限制#maxconnections=10
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 35598 | 0 | 3500 | 4200 | 36000 | 4112 | 1043 | 40115 | 648 | 168.2 | 0 |
Aggregated | 35598 | 0 | 3500 | 4200 | 36000 | 4112 | 1043 | 40115 | 648 | 168.2 | 0 |
100 Number of users (peak concurrency)
100 Spawn rate (users started/second)
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 8889 | 0 | 1027 | 1100 | 1300 | 1052 | 1027 | 1823 | 648 | 96.8 | 0 |
Aggregated | 8889 | 0 | 1027 | 1100 | 1300 | 1052 | 1027 | 1823 | 648 | 96.8 | 0 |
取消数据库链接限制#maxconnections=10
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 12128 | 0 | 1100 | 1100 | 1400 | 1071 | 1028 | 3807 | 648 | 96.5 | 0 |
Aggregated | 12128 | 0 | 1100 | 1100 | 1400 | 1071 | 1028 | 3807 | 648 | 96.5 | 0 |
50 Number of users (peak concurrency)
50 Spawn rate (users started/second)
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 10909 | 0 | 1034 | 1100 | 1100 | 1049 | 1034 | 1532 | 648 | 45.7 | 0 |
Aggregated | 10909 | 0 | 1034 | 1100 | 1100 | 1049 | 1034 | 1532 | 648 | 45.7 | 0 |
取消数据库链接限制#maxconnections=10
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 10817 | 0 | 1029 | 1100 | 1200 | 1054 | 1029 | 1688 | 648 | 45.6 | 0 |
Aggregated | 10817 | 0 | 1029 | 1100 | 1200 | 1054 | 1029 | 1688 | 648 | 45.6 | 0 |
20 Number of users (peak concurrency)
20 Spawn rate (users started/second)
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 2010 | 0 | 1028 | 1100 | 1100 | 1048 | 1028 | 1268 | 648 | 19 | 0 |
Aggregated | 2010 | 0 | 1028 | 1100 | 1100 | 1048 | 1028 | 1268 | 648 | 19 | 0 |
取消数据库链接限制#maxconnections=10
Type | Name | # Requests | # Fails | Median (ms) | 90%ile (ms) | 99%ile (ms) | Average (ms) | Min (ms) | Max (ms) | Average size (bytes) | Current RPS | Current Failures/s |
---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | / | 3808 | 0 | 1027 | 1100 | 1100 | 1047 | 1027 | 1410 | 648 | 18.4 | 0 |
Aggregated | 3808 | 0 | 1027 | 1100 | 1100 | 1047 | 1027 | 1410 | 648 | 18.4 | 0 |
结论:数据库连接池限制maxconnections参数要加,具体多少合适未知,可以根据CPU数量定
数据库连接池可参考另一篇文章。