V2EX 07月16日 04:29
[问与答] 如何提升 FastAPI 的 RPS 上限
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文通过Nginx和Gunicorn的压测结果,对比了两者在静态文件和简单API请求处理上的性能差异。

这是我在网站目录下放了返回数据样本(不到 1k),直接通过 Nginx ( 4 个 workers )返回静态文件的压测结果

wrk -t2 -c750 -d10s https://xxx.com/test.jsonRunning 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 readRequests/sec:  20989.41Transfer/sec:     13.95MB

于是我又打算测试下裸连 Gunicorn (也是 4 个 workers ),请求一个不到 1k 的 1x1 透明 gifgunicorn -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.gifRunning 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 readRequests/sec:   1633.21Transfer/sec:    257.37KB

Nginx 直接返回数据:20989.41 rps不反向代理,裸连 Gunicorn:1633.21 rps

这性能差距也太大了吧?

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Nginx Gunicorn 性能测试 静态文件 API请求
相关文章