这是我在网站目录下放了返回数据样本(不到 1k),直接通过 Nginx ( 4 个 workers )返回静态文件的压测结果
wrk -t2 -c750 -d10s https://xxx.com/test.json
Running 10s test @ https://xxx.com/test.json
2 threads and 750 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 39.13ms 61.57ms 793.10ms 96.90%
Req/Sec 11.84k 1.88k 16.28k 80.46%
211719 requests in 10.09s, 140.73MB read
Requests/sec: 20989.41
Transfer/sec: 13.95MB
于是我又打算测试下裸连 Gunicorn (也是 4 个 workers ),请求一个不到 1k 的 1x1 透明 gif
gunicorn -k uvicorn.workers.UvicornWorker -w 4 -b 127.0.0.1:8000 main:app
TRANSPARENT_GIF = (
b"\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00"
b"\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00"
b"\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b"
)
@app.get("/api/ping.gif")
def transparent_image():
return Response(content=TRANSPARENT_GIF, media_type="image/gif")
wrk -t2 -c750 -d10s http://127.0.0.1:8000/api/ping.gif
Running 10s test @ http://127.0.0.1:8000/api/ping.gif
2 threads and 750 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 440.03ms 189.73ms 979.84ms 59.90%
Req/Sec 846.07 359.59 1.65k 65.13%
16483 requests in 10.09s, 2.54MB read
Requests/sec: 1633.21
Transfer/sec: 257.37KB
Nginx 直接返回数据:20989.41 rps 不反向代理,裸连 Gunicorn:1633.21 rps
这性能差距也太大了吧?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.