python - mod_wsgi 进程被杀死,django 停止工作

标签 python django mod-wsgi

我让 mod_wsgi 在自定义 Linux 构建上以守护进程模式运行。 我没有在 apache 配置中包含任何进程数或线程数。这是我的配置:

WSGIDaemonProcess django user=admin
WSGIProcessGroup django
WSGIScriptAlias /django_apps /django/apache/django.wsgi
WSGIApplicationGroup %{GLOBAL}

在系统上,有一个 httpd 清理进程正在运行,它会杀死任何超过特定内存阈值的 httpd 进程。

看起来正在运行 mod_wsgi 的 httpd 进程正在被杀死。之后,我网站的 django 部分停止工作。

我收到此错误消息:

Script timed out before returning headers: django.wsgi

每次访问 Django 页面时,我都会收到这些日志消息:

<6> Jul  7 10:13:11 httpd[12598]: [info] mod_wsgi (pid=12598): Initializing Python.
<6> Jul  7 10:13:11 httpd[12598]: [info] mod_wsgi (pid=12598): Attach interpreter ''.
<6> Jul  7 10:13:16 httpd[12638]: [info] mod_wsgi (pid=12638): Attach interpreter ''.
<6> Jul  7 10:13:17 httpd[12615]: [info] mod_wsgi (pid=12615): Destroying interpreters.
<6> Jul  7 10:13:17 httpd[12615]: [info] mod_wsgi (pid=12615): Cleanup interpreter ''.
<6> Jul  7 10:13:17 httpd[12615]: [info] mod_wsgi (pid=12615): Terminating Python.
<6> Jul  7 10:13:17 httpd[12615]: [info] mod_wsgi (pid=12615): Python has shutdown.

任何人都可以帮助我了解这里发生了什么。为什么mod_wsgi进程重启失败?如何配置它以正常重启?

非常感谢。

最佳答案

首先,请阅读:

http://blog.dscpl.com.au/2009/11/save-on-memory-with-modwsgi-30.html

如果仅使用守护进程模式,则在嵌入式进程中禁用 Python 解释器的初始化。这些日志消息可能来自嵌入式进程,并且由于 Apache MPM 的过于激进的设置而显示出来,导致主要的 Apache 子进程启动和关闭太多。禁用未使用的解释器,这些消息可能会消失。

虽然这个问题与您使用守护进程模式进程的问题是分开的。

为此,在 WSGIDaemonProcess 上设置 'display-name=%{GROUP}' 选项。这将导致守护进程模式进程在“ps”输出列表中显示为“(wsgi:django)”。这样您就可以清楚地识别它是哪个进程。

然后,当您的进程 killer 启动时,使用“ps”来验证进程的状态以及是否确实存在一个进程以及它是否正确关闭。可能发生的情况是该进程拒绝关闭,因为它正在等待某个子进程关闭或卡在某个远程文件系统操作上。或者,代码正在注册一个干扰正确关闭的信号处理程序。

如果该进程未正确关闭,则不会被替换,但关闭的启动可能会将其置于不接受新请求的状态。

因此,从这里开始并报告您的发现。

顺便说一句,有一个官方的 mod_wsgi 邮件列表。 StackOverflow 是来回调试此类问题的糟糕媒介。

关于python - mod_wsgi 进程被杀死,django 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608748/

相关文章:

apache2 - 在WSGI和Apache上运行时Python的工作目录

python - 如何防止 mod_wsgi Django 应用程序重复重新加载?

python - 在 YARN 上运行 Spark 作业

python - 如何根据该类的帮助文件正确组织 Python 类定义?

python - 发布到特定 channel /群组

django - 单击电子邮件激活链接后如何将状态传递给前端

python - (半)自动生成函数的 argparsers

python - 为什么这个单例实现是 "not thread safe"?

python - 在 django vanilla CreateView 上设置当前用户

python - mod_wsgi python2.5 ubuntu 11.04问题