python - 无法将 Gunicorn/Flask HelloWorld 扩展到超过 125 RPS
问题描述
我有一个 Flask 应用程序,我无法在本地扩展超过 125 RPS。这是一个简单的“hello world”,如下所示。
我正在使用 Locust.io 负载测试工具。我已经将相同的负载测试指向本地 Golang hello world,并且能够进入 1000 的 RPS。恕我直言,这排除了我的 Locust 和操作系统配置作为潜在的瓶颈。
我使用 17 名工人,因为我的机器有 8 个内核((2*CPU)+1
Gunicorn 文档推荐)
根据我的阅读,使用 Gunicorn 的gevent
worker 类型应该可以让我达到 1000 的 RPS,就像使用 Golang 一样。这是一个正确的假设吗?还是我错过了一些关键的东西?
缩写代码:
app = Flask(__name__)
@app.route('/')
def hello():
return 'hello world!'
独角兽会议:
gunicorn -k gevent -w 17 --worker-connections 100000 app:app
解决方案
作者在这里的回答:https ://github.com/benoitc/gunicorn/issues/305
经过一周的调试,我想通了!原来有一个额外的工人类型,gevent_pywsgi
. 使用这种工人类型大约增加了 10 倍,达到我认为可以接受的水平。
sync
我的测试显示工人和工人之间的性能没有差异gevent
,所以我仍然不确定那里发生了什么,或者gevent
工人类型的意图是什么。
推荐阅读
- django - 仅在调用更新时发布保存信号
- javascript - 手机屏幕菜单按钮消失
- laravel - SQLSTATE [HY000] Laravel 8 中的外键约束格式错误
- python - Linux 上的正文电子邮件 PYTHON 中的图片
- firebase - Firestore 文档数据返回未定义
- xml - 为什么我的 XML 文件在 EC2 实例上不起作用
- css - 闪亮的页脚位置
- sql - 如何在 Tableau 中制作仪表板日期参数,默认为本月的第一天到现在?
- django - Django 中并发 Celery 工作人员的死锁
- c# - 无论分支如何,如何使用 libgit2sharp 获取所有 git 提交?