Wednesday, March 31, 2010

Apache mpm 模組 ( worker 和 prefork 的差別 )

Apache mpm 模組 ( worker 和 prefork 的差別 )
分享

阿舍在 Ubuntu 9.10 上安裝 PHP5 的時候,發現它會安裝 Apache 的 MPM 模組,而且,這個 MPM 還分成 workerprefork 兩個子模組,阿舍一時好奇,就去查了一下,這個模組是做什麼的 & 有什麼差別 ??

Apache 的 MPM 是 Multi-Processing Module 的縮寫,是讓 Apache 以多重處理器的方式來處理要求 ( Request ),可以讓 Apache 更有效率的以較少的資源處理更多的服務要求,而實做這項功能的方式有二種,一種是採用 Multi-Thread (多重執行緒 ) 的方式,另一種便是 Pre-forking (預載分流 ) 的方式。

其中的 Multi-Thread 的方式便是 worker 模組的運作方式,適合運用在多核心的 CPU 上,而 Pre-Forking 的方式則是 prefork 的運行方式,適合在多顆 CPU 執行環境。

在Ubuntu 上,Apach2 MPM 的相關設定會存放在 /etc/apache2/apach2.cnf 裡。

Note: 如果想 enable thread,你必需 用 Worker;用 Prefork 的話,thread 不會被 enable。
# httpd -V

Server MPM: Prefork
threaded: no

No comments: