Apache默認的是線程安全的prefork,Prefork MPM 使用多個子進程,每一個子進程有一個線程,每一個進程每次只處理一個請求鏈接,一個請求出故障後不會影響其餘請求,是線程安全的php
worker使用的是多進程多線程,每一個進程有多個線程,每一個線程每次處理一個請求鏈接,擁有更高的性能,可是是非線程安全的。html
PHP的官方推薦不適用線程的 mpm,即threaded MPM,由於PHP做爲一種膠水語言,將幾十種第三方庫鏈接起來構建程序,若是其中有第三方庫不能正常工做了,PHP都須要對其進行診斷問題而後修復,當底層的環境不是每一個獨立的進程和徹底分離的內存分佈的時候,將會帶入不少不穩定因素進來。nginx
若是須要處理大量請求的話,能夠將Apache + mod_php換成nginx + php-fpm。apache
相對於apache的select的網絡i/o模型,nginx採用了性能更好的epoll模型,再加上fpm實現的fastcgi,能夠常駐內存,只要初始化一次就能夠,能夠支持更高的併發。安全