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 表示要加载多少个进程。