为什么当我在启动时自动启动 httpd 时会有 9 个 httpd 进程在运行?

为什么当我在启动时自动启动 httpd 时会有 9 个 httpd 进程在运行?

Apgrep httpd产生 9 个 pid:

1624
1651
1652
1653
1654
1655
1656
1657
1658

如果我杀死具有第一个 pid(此处)的 httpd 进程1624,则所有 httpd 进程都会被杀死。

虽然如果杀死除第一个之外的其他 pid 的进程,也只会杀死该进程。并且一旦 httpd 进程数低于 6,它就会生成 httpd 进程,并且 httpd 进程数将维持在 6 个常数。

当我手动启动 httpd 时不会发生这种情况。只创建了一个进程。

  • 为什么会出现上述行为?
  • httpd 是否以基于线程的方式启动?

Also I am running httpd on Fedora 15 on a 6 core processor.

并且我没有对注释/etc/sysconfig/httpd中的每一行进行任何更改。/etc/sysconfig/httpd

答案1

行为取决于您使用的 MPM,但确实如此;这些是工作进程。请StartServers在您的配置中查找该指令。

答案2

当您通过服务或 /etc/init.d/httpd 启动 httpd 时,它会读取 /etc/sysconfig/httpd,如果 HTTPD 没有更改,它会启动 prefork 模型。当您手动启动它时,您可能正在启动基于 worker 的模型。如果您查看 /etc/httpd/conf/httpd.conf 并查找 prefork,您将找到与任一模型相关的部分。StartServers 表示要加载多少个进程。

相关内容