Dan*_*eta 5 http nginx flask uwsgi
我有一个 Nginx Web 服务器,在单个 CPU Ubuntu 14.04 映像上安装了 uWSGI 应用程序服务器。
这个 uWSGI 应用服务器成功处理了一个 Flask 应用请求。我面临的问题是有时来自单个客户端的请求会超时一段时间(1-2 小时)。
这是在没有在我的 uwsgi.conf 文件中指定工作人员或线程的情况下发生的。每个 CPU 是否有理想的工作线程/线程数量?
我正在使用皇帝服务来启动 uWSGI 应用程序服务器。这就是我的 uwsgi.conf 的样子
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/var/www/parachute_server/venv/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log
exec $UWSGI --master --workers 2 --threads 2 --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO --stats 127.0.0.1:9191
Run Code Online (Sandbox Code Playgroud)
这可能是 nginx / uwsgi 的性能问题,还是更有可能发生这些超时,因为我只使用单个 CPU?
任何帮助深表感谢!
你有一个有趣的问题...
通常,您至少指定 2 * #CPUs + 1。这是因为 uWSGI 可能正在对套接字执行读/写,然后您将有另一个工作人员接受请求。此外,threads如果您的工作人员是同步的,则该标志很有用,因为他们可以通知主线程他们仍在忙于工作,从而防止超时。
我认为有一名工作人员是您超时的原因(阻止所有其他请求),但您应该检查您的应用程序的响应。如果他们需要很长时间(比如从数据库读取),您将需要调整uwsgi_read_timeoutNginx 中的指令以允许 uWSGI 处理请求。
我希望这有帮助。