Django + mod_wsgi + apache2 - 子进程XXX仍未退出,发送SIGTERM

时间:2013-11-10 15:22:08

标签: django python-2.7 apache2 mod-wsgi django-wsgi

我收到间歇性错误 -

子进程XXX仍未退出,发送SIGTERM ..然后是SIGKILL。它间歇性地发生并且网页挂起。

我没有使用守护程序进程..但是现在我仍然存在问题..

我也有一些错误打开文件进行阅读:权限被拒绝。

请有人帮忙吗?

我是这个论坛的新手,很抱歉,如果之前已经回答过。

1 个答案:

答案 0 :(得分:4)

如果您没有使用mod_wsgi的守护进程模式,那就意味着必须在显示初始消息时重新启动Apache。

正在发生的事情是,在尝试重新启动时,Apache会将SIGTERM发送到其子进程。如果他们没有自行退出,它将以1秒的间隔再次发送SIGTERM,最后在3秒后发送一个SIGKILL。该消息警告您后者,并强制杀死该过程。

现在的问题是导致进程无法立即关闭的原因。可能有各种原因。

  • 使用Python的扩展模块,它在子解释器中无法正常工作,这会导致死锁并挂起进程,从而阻止其关闭。 http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

  • 在Python Web应用程序中使用后台线程,这些后台线程尚未被正确设置为守护程序线程,结果是阻止进程关闭。

  • 您的网络应用程序只是试图以某种方式在进程关闭时做太多而没有在时间限制内完成。

即使使用守护进程模式,您也可能会看到此行为,因为它实现了类似的关闭超时,尽管可以为守护进程模式配置超时。

无论如何,强制使用主Python解释器,如上面的文档链接中所述

关于权限问题,请阅读:

简而言之,确保您需要访问的文件/目录的访问权限正确,并确保在访问文件系统时始终使用绝对路径名。