ald*_*ido 2 django nginx uwsgi
每次当我有代码更新时重新启动服务器时,我都会遇到 uwsgi 问题。
当我使用“sudo restart account”重新启动 uwsgi 时,停止和启动实例之间存在一个小间隙,导致停机并停止所有当前请求。
当我尝试“sudo reloadcounting”时,它有效,但我的记忆力上升(双倍)。当我运行命令“ps aux | grep account”时,它显示我有 10 个正在运行的进程 (accounting.ini),而不是 5 个,并且当内存达到限制时,它会冻结我的服务器。
会计.ini
我在跑步
这就是 uwsgi 优雅地重新加载的方式。保留旧进程,直到请求得到服务为止,并创建新进程来接管传入请求。
\n\n\n\n\n\n\n不要忘记,仍在运行请求的工作线程/线程可能会阻止重新加载(出于各种原因),时间超过代理服务器可以容忍的秒数。
\n
和这个
\n\n\n\n\n优雅重载的另一个重要步骤是避免破坏仍在管理请求的工作线程/线程。显然,请求\n可能会被卡住,所以你应该有一个运行工作线程的超时(在\n uWSGI中,它被称为\xe2\x80\x9cworker\xe2\x80\x99s怜悯\xe2\x80\x9d,它有一个默认值值\n 60 秒)。
\n
所以我建议尝试worker-reload-mercy
\n\n默认值是等待 60 秒,只需将其降低到服务器可以处理的值即可。
\n\n告诉我是否有效。
\n\n这是解决您的问题的另一次尝试。正如您提到的,您的 uwsgi 工作人员正在以下述方式重新启动:
\n\nSIGHUP向主机发送信号这种重新加载的缺点之一可能是工作人员被卡住。\n此外,您报告说,当 uwsgi 维护 10 个进程(5 个旧进程和 5 个新进程)时,您的服务器崩溃。
\n\n我建议尝试chain reload。文档中的直接引用解释了这种重新加载的最佳方式:
\n\n\n\n\n触发后,它将在时间 重新启动一个工作程序,并且直到前一个工作程序准备好接受新请求时,才会重新加载后面的工作程序。
\n
这意味着您的服务器上不会有 10 个进程,而是只有 5 个。
\n\n应该有效的配置:
\n\n# your .ini file\nlazy-apps = true\ntouch-chain-reload = /path/to/reloadFile\nRun Code Online (Sandbox Code Playgroud)\n\n有关链重载和其他类型的一些资源位于以下链接中:
\n\n\n\n\n| 归档时间: |
|
| 查看次数: |
3839 次 |
| 最近记录: |