为什么我们会看到与同一应用程序/所有者相关的多个 PID,如下所示。这是什么意思?

为什么我们会看到与同一应用程序/所有者相关的多个 PID,如下所示。这是什么意思?

为什么我们会看到与同一应用程序/所有者相关的多个 PID,如下所示。这是什么意思?

 $ ps -ef | grep httpd | grep -v grep
 apache    9619 20181  0 07:08 ?        00:00:03 /usr/sbin/httpd
 apache   10092 20181  0 Jan24 ?        00:00:07 /usr/sbin/httpd
 apache   13086 20181  0 06:09 ?        00:00:00 /usr/sbin/httpd
 apache   13717 20181  0 Jan25 ?        00:00:01 /usr/sbin/httpd
 apache   14730 20181  0 07:13 ?        00:00:01 /usr/sbin/httpd
 apache   16359 20181  0 09:54 ?        00:00:00 /usr/sbin/httpd
 root     20181     1  0  2011 ?        00:00:01 /usr/sbin/httpd
 apache   21450 20181  0 09:55 ?        00:00:00 /usr/sbin/httpd

答案1

每个 httpd PID 代表一个正在运行以处理传入请求的服务器进程。可以通过 httpd conf 文件中的以下指令来控制在后台运行的服务器进程的默认数量(其他应用程序类似)。

# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

答案2

这就是 Apache Web 服务器的工作方式。基本上,主进程以 root 身份启动,根据配置文件打开适当的端口,然后复制/分叉您配置的侦听器/服务器数量。这些服务器以配置的用户(在本例中为 apache)身份运行,基本上处理一个 HTTP 事务。因此,配置的服务器数量越多,您可以同时处理的请求就越多。

所以回答你的问题的意思是,看起来你有一个 Apache 网站正在运行。

答案3

这是正常的;Apache 和许多其他应用程序一样,会运行自身的多个副本。在这种情况下,是完整进程(具有自己的 PID),但在其他配置中,可能是多个线程。

StartServers、MinSpareServers、MaxSpareServers 等是值得注意的配置指令。

答案4

第二列中的数字是 PPIDS(父 PID),它表示大多数 http 进程都是原始进程(在本例中为最初以 root 身份启动的 20181)的子进程(由于 exec/fork/...)。

正如其他答案已经指出的那样,这是实现多处理以利用多个 CPU 进行并行处理的一种选择。这受 Apache 配置中“mpm”工作模型的选择影响。

相关内容