Apache-2.2
為什麼在啟動時自動啟動 httpd 時會執行 9 個 httpd 程序?
A
pgrep 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 表示要載入多少程序。