每当我有代码更新时,每次重启服务器时都会遇到uwsgi问题。
答案 0 :(得分:2)
这是uwsgi正常重新加载的方式。保留旧的流程,直到请求得到处理为止,并创建新的流程来接管传入的请求。
不要忘记,您的工作线程/线程仍在运行请求 (由于各种原因)可能会阻止重新加载超过几秒钟 您的代理服务器可以容忍。
还有这个
优雅重新加载的另一个重要步骤是避免破坏 仍在管理请求的worker /线程。显然要求 可能会卡住,所以您应该让正在运行的工人超时(在 uWSGI,它被称为“工人的怜悯”,其默认值为 60秒)。
所以我建议尝试worker-reload-mercy
默认值为等待60秒,将其降低到服务器可以处理的水平。
告诉我它是否有效。
这是另一种尝试解决您的问题的方法。正如您提到的,您的uwsgi工作者正在以以下所述的方式重新启动:
SIGHUP
信号这种重新加载的弊端之一可能是卡住的工人。 另外,您报告uwsgi维护10个进程(5个旧进程和5个新进程)时服务器崩溃。
我建议尝试重新加载链。文档中的直接引用最能说明这种重新加载的方式:
被触发后,它将一次重新启动一个工作线程,并且直到上一个工作线程准备好接受新请求时,才会重新加载下一个工作线程。
这意味着您的服务器上将没有10个进程,而只有5个进程。
应该正常工作的配置:
# your .ini file
lazy-apps = true
touch-chain-reload = /path/to/reloadFile
一些有关链式装载和其他种类的资源位于下面的链接中: