我有一些性能问题时,配置我们的uWSGI应用程序运行。以前,它是在一个独立的tmux会话中运行的,使用:
python application.py run现在,我已经使用以下服务文件将其重新配置为在uWSGI中运行:
[Unit]
Description=Flask App
After=syslog.target network.target
[Service]
Type=simple
Restart=always
RestartSec=30
User=nginx
Group=nginx
WorkingDirectory=/var/www/flaskapp
ExecStart=/bin/bash /var/www/flaskapp/run.sh
KillSignal=SIGQUIT以及下面的运行脚本(因为我们在CentOS 7上运行Python3.8,默认情况下它不可用):
source scl_source enable devtoolset-9 rh-python38
source venv/bin/activate
uwsgi --ini uwsgi.ini以及以下INI文件:
[uwsgi]
master = true
thunder-lock = true
http-socket = 0.0.0.0:5000
wsgi-file = application.py
virtualenv = /var/www/flaskapp/venv/
module = application:app
processes = 4
threads = 2
gid = nginx
uid = nginx
chmod-socket = 664
max-requests = 5000
harakiri = 60
socket = %dapp.sock
lazy-apps = true
vacuum = true
enable-threads = true
buffer-size = 32768一切都正常,在使用ab进行测试时,我每秒钟都会收到更多的请求,所以基本上一切都很好。但是,在解析来自请求主体的参数(我们使用调试日志将其固定下来)时,似乎每个请求都有一个小延迟(我猜在300到1000 ms之间):
from flask_restful import request
...
args['data'] = request.get_json().get('data')有人知道在uWSGI内部运行或从shell运行有关JSON解析的请求时有什么不同的行为吗?比如,尝试打开stdin的500 ms超时(据我所知,应该映射到/dev/null )或其他什么?或者可能有一些配置错误?
编辑:使用uWSGI 2.0.19.1 +Python3.8.6
发布于 2021-12-16 12:06:24
如果有人在找同样的问题,我找到了解决办法。
正如大多数指南建议在uWSGI之上使用nginx一样,我尝试过这样做,由于某种原因,在添加了一个额外层之后,性能问题就消失了。
nginx配置:
location / {
root /your/path/to/app;
uwsgi_pass unix:////your/path/to/app/app.sock;
include uwsgi_params;
}uWSGI INI:
[uwsgi]
...
chmod-socket = 664
socket = %dapp.sock
buffer-size = 32768
...https://stackoverflow.com/questions/68996400
复制相似问题