Apache2.x的MPM分析

Apache2.x的MPM分析:

MPM (Multi-processing Module):相對於apache1.x的版本,性能上提升最顯著的改進。

apache的編譯選項中可以看到下面一些MPM的種類:

--with-mpm=MPM Choose the process model for Apache to use.
MPM={beos|worker|prefork|mpmt_os2|perchild|leader|threadpool}

常用的應該就只有3個:worker|prefork|perchild

  1. prefork:在功能上就是使用Apache的運行方式,一個父進程,然後根據設置以及連接情況生成相應的子進程數。這種模式可靠性和健壯性都是最好的。但是在性能上,開銷過大。達不到我們這些“吸血鬼”的要求了^_^。如果連接數過多的話,會導致我們無法遠程登陸,一定要等到連接數下降後才能連接,這也是最讓我頭痛的事情。
  2. worker:混合線程/進程的MPM。一個父進程,後面是帶有線程的子進程。每個子進程的線程數是固定且相同的。這是最“平庸”的一個模式,但也是使用人最多的一種模式。因爲它性能等各方面比較均衡。性能上要比prefork好一些,只是犧牲了一點點的健壯性和可靠性而已。一般推薦使用這個選項。
  3. perchild:也是混合線程/進程的MPM。當啓動perchild MPM時,它會建立指定數量的子進程,且每個子進程都具有指定數量的線程,如負載增加了,那它不會建立新的進程(子進程是固定的),只是在子進程下建立新的線程。它還有一個特點就是可以爲每一個子進程配置不同的用戶和組。也可以爲每個虛擬主機指定一個子進程。這種模式性能是最佳的,但是可靠性和健壯性就相對是最差的。各取所需,我個人覺得這種模式也不錯,如果你不用第三方的模塊的話^_^。

注:其他的模式我個人沒有接觸,因此說不出他們的區別和特點。上面說的最佳和最差僅在這3種模式中做比較。水平有限,如有錯誤,歡迎一起討論指正!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章