Apache 错误:无法使子进程 25105 退出,仍尝试继续

Apache 错误:无法使子进程 25105 退出,仍尝试继续

我有一个基于 Ubuntu Server 9.10 的 Web 服务器,其中装有以下软件:

apache 2
PHP 5.3
MySQL 5
Python 2.5

我的网站很少基于 PHP,很少有通过 mod_wsgi 使用 python/django 的网站。

大约一个月以来,我的 Apache 服务器每天都会停止响应,直到我手动重新启动它。

错误日志显示:

[Fri Mar 05 17:06:47 2010] [error] could not make child process 25059 exit, attempting to continue anyway
[Fri Mar 05 17:06:47 2010] [error] could not make child process 25061 exit, attempting to continue anyway
[Fri Mar 05 17:06:47 2010] [error] could not make child process 24930 exit, attempting to continue anyway
[Fri Mar 05 17:06:47 2010] [error] could not make child process 25084 exit, attempting to continue anyway
[Fri Mar 05 17:06:47 2010] [error] could not make child process 25105 exit, attempting to continue anyway

等等。

我尝试过了谷歌一下这个问题但似乎我无法在那里找到解决方案。

我如何确定此错误的原因以及如何修复它?

感谢您的帮助。

更新

  • 将 mod-wsgi 更新至 3.1 版本未能解决问题
  • 更新 PHP 至 5.3 也未能解决问题

以下是所有已安装模块的列表:

core
mod_log_config
mod_logio
prefork
http_core
mod_so
mod_alias
mod_auth_basic
mod_authn_file
mod_authz_default
mod_authz_groupfile
mod_authz_host
mod_authz_user
mod_autoindex
mod_cgi
mod_deflate
mod_dir
mod_env
mod_mime
mod_negotiation
mod_php5 mod_rewrite
mod_setenvif
mod_status
mod_wsgi

以下是我的带有 wsgi 的虚拟主机的样子:

<VirtualHost *:80>
    ServerName example.net
    DocumentRoot /var/www/example.net
    #wcgi script that serves all the thing
    WSGIScriptAlias / /var/www/example.net/index.wsgi
    WSGIDaemonProcess example user=wsgideamonuser group=root processes=1 threads=10
    WSGIProcessGroup example

    Alias /static /var/www/example.net/static
    #serving admin files
    Alias /media/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/

    <Location "/static">
        SetHandler None
    </Location>
    <Location "/media">
        SetHandler None
    </Location>

    ErrorLog /var/www/example.net/error.log
</VirtualHost>

错误日志现在包含两种相互关联的错误类型:

[error] child process 9486 still did not exit, sending a SIGKILL
[error] could not make child process 9106 exit, attempting to continue anyway

答案1

该错误来自 Apache 源代码中的 server/mpm_common.c。当 Apache 去回收服务器子进程时(大概是当它们被触发关闭时),这些进程实际上并没有死亡。这些进程可能由于某种原因挂起了。

为了消除 mod_wsgi 或 Python 问题,请确保您使用的是 mod_wsgi 3.1,并使用 mod_wsgi 的守护进程模式(而不是嵌入模式)。

相关内容