Apache-2.2

為什麼在啟動時自動啟動 httpd 時會執行 9 個 httpd 程序?

  • January 13, 2012

Apgrep httpd產生 9 個 pid:

1624
1651
1652
1653
1654
1655
1656
1657
1658

如果我用第一個 pid( 這裡1624) 殺死 httpd 程序,所有的 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

行為取決於您使用的 MPM,但是是的,這是預期的;這些是工作程序。StartServers在您的配置中查找指令。

當你通過服務或/etc/init.d/httpd 啟動httpd 時,它會讀取/etc/sysconfig/httpd,如果HTTPD 沒有改變,它會啟動prefork 模型。當您手動啟動它時,您可能正在啟動基於工人的模型。如果您查看 /etc/httpd/conf/httpd.conf 並查找 prefork,您將找到與任一模型相關的部分。StartServers 表示要載入多少程序。

引用自:https://serverfault.com/questions/349748