Apache 兩種mpm prefork 和 worker 的區別

  Apache默認的是線程安全的prefork,Prefork MPM 使用多個子進程,每個子進程有一個線程,每個進程每次只處理一個請求連接,一個請求出故障後不會影響其他請求,是線程安全的

  worker使用的是多進程多線程,每個進程有多個線程,每個線程每次處理一個請求連接,擁有更高的性能,但是是非線程安全的。

  PHP的官方推薦不適用線程的 mpm,即threaded MPM,因爲PHP作爲一種膠水語言,將幾十種第三方庫連接起來構建程序,如果其中有第三方庫不能正常工作了,PHP都需要對其進行診斷問題然後修復,當底層的環境不是每個獨立的進程和完全分離的內存分佈的時候,將會帶入很多不穩定因素進來。

  如果需要處理大量請求的話,可以將Apache + mod_php換成nginx + php-fpm。

   相對於apache的select的網絡i/o模型,nginx採用了性能更好的epoll模型,再加上fpm實現的fastcgi,可以常駐內存,只要初始化一次就可以,可以支持更高的併發。

http://httpd.apache.org/docs/2.2/mpm.html

http://www.nowamagic.net/librarys/veda/detail/1319/

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