首页 > 解决方案 > httpd 工作成为僵尸进程

问题描述

我正在通过 apache + mod_php 在 docker 容器中运行 php 服务。由于某种原因,我迟早会在反向代理上得到“服务不可用”。检查容器时,我总是发现所有 httpd 工作人员都变成了僵尸,不再被主进程收割。我认为这是由于 docker 容器中的僵尸收割问题,并试图通过将 tini 添加为 pid 1 来解决它。不幸的是,它没有解决问题,我想是因为 httpd 主进程仍在运行,所以工作人员实际上不是孤儿被 pid 1 收割。此时我不知道如何解决这个问题,因此寻求您的帮助。

有谁知道如何调试这种问题?

下面是在容器内运行的“top”命令的输出。我使用普通的 alpine 作为基本映像,并通过“apk”安装了 php7。

    9     1 root     S     169m   1%   3   0% /usr/sbin/httpd -D FOREGROUND
 5493     0 root     S     1592   0%   1   0% sh
 5501  5493 root     R     1524   0%   2   0% top
    1     0 root     S      760   0%   0   0% /sbin/tini -- /usr/sbin/httpd -D F
 5484     9 apache   Z        0   0%   3   0% [httpd]
 5492     9 apache   Z        0   0%   0   0% [httpd]
 5485     9 apache   Z        0   0%   0   0% [httpd]
 5490     9 apache   Z        0   0%   3   0% [httpd]
 5486     9 apache   Z        0   0%   0   0% [httpd]
 5487     9 apache   Z        0   0%   1   0% [httpd]
 5483     9 apache   Z        0   0%   3   0% [httpd]
 5482     9 apache   Z        0   0%   1   0% [httpd]
 5489     9 apache   Z        0   0%   1   0% [httpd]
 5491     9 apache   Z        0   0%   3   0% [httpd]
 5488     9 apache   Z        0   0%   0   0% [httpd]

标签: phpapachedockerunixzombie-process

解决方案


推荐阅读