安装
yum install -y openssl git
git clone https://github.com/wg/wrk.git wrk
cd wrk
make
cp wrk /usr/local/bin/
测试
测试服务:fastapi(pip3 install fastapi uvicorn -i https://mirrors.aliyun.com/pypi/simple
)
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "world"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
启动:
uvicorn hello:app --host 192.168.0.10 --port 8000 --reload
测试:
wrk -t8 -c400 -d30s http://192.168.0.10:8000
# t:线程数。关于线程数,并不是设置的越大,压测效果越好,线程设置过大,反而会导致线程切换过于频繁,效果降低,一般来说,推荐设置成压测机器 CPU 核心数的 2 倍到 4 倍就行了。
# c:模拟400个并发请求
# d:持续时间
分析测试结果
Running 30s test @ http://192.168.0.10:8000
8 threads and 400 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 628.72ms 47.76ms 811.86ms 67.54%
Req/Sec 107.60 88.35 440.00 70.42%
18898 requests in 30.10s, 2.56MB read
Requests/sec: 627.89
Transfer/sec: 87.14KB
-
列:
- Avg:平均值
- Stdev:标准差
- Max:最大值
- +/- Stdev:正负一个标准差所占比例
-
行:
- Latency:延迟
- Req/Sec:每秒请求数
-
其它:
- Requests/sec:即QPS,平均每秒处理请求数
- Transfer/sec:平均每秒流量