Apache-2.2
安裝哪個:Apache Worker 還是 Prefork?每個的(缺點)優點是什麼?
根據對Prefork和Worker MPM 的描述,似乎 prefork 類型有些過時,但我真的找不到這兩種類型的適當比較。
我想知道的:
- 兩個版本有什麼區別?
- 每種伺服器類型的(缺點)優點是什麼?
- 是否有根據條件選擇哪種類型的基本準則?
- 兩者之間有什麼大的性能差異嗎?
正如文件所說,如果您需要避免執行緒化以與非執行緒安全庫兼容,則應該使用 prefork MPM。通常,任何重要的 Apache 模組(
mod_php
或者更準確地說,它連結到的無數擴展和庫——作為典型範例)都有某種非執行緒安全的庫(或具有非執行緒安全的庫)。裡面的安全程式碼),所以除非你使用的是漂亮的 Apache 安裝,否則我會選擇 prefork MPM。
在為大量(>100)並發連接提供服務的同時執行不安全擴展的經典解決方案是在 fastCGI(mod_fcgid,本機 apache 模組)上執行 PHP,並將動態請求代理到來自執行 Worker MPM 的 apache 實例的請求。
當提供靜態和動態內容的混合時,這將使您能夠使用適度的記憶體(4~8GB)從幾百個擴展到> 1000個並發連接。
當然,您還應該研究前端記憶體解決方案作為整體部署的一部分(memcached、varnish)。
或者,升級到 apache 2.4 及其本機事件MPM,它以一種大大改進的方式處理並發(執行緒在連接時被觸發,而不是等待輪詢。)