apache的两种工作模式
prefork一個進程一個線程
1、prefork.c模塊(一個非線程型的、預派生的MPM) prefork MPM 使用多個子進程,每個子進程只有一個線程。每個進程在某個確定的時間只能維持一個連接。在大多數平臺上,Prefork MPM在效率上要比Worker MPM要高,但是內存使用大得多。prefork的無線程設計在某些情況下將比worker更有優勢:他能夠使用那些沒有處理好線程安全的第三方模塊,并 且對于那些線程調試困難的平臺而言,他也更容易調試一些。
工作方式:
一個單獨的控制進程(父進程)負責產生子進程,這些子進程用于監聽請求并作出
文檔沖億季,好禮樂相隨mini ipad移動硬盤拍立得百度書包
應答。Apache總是試圖保持一些備用的 (spare)或是空閑的子進程 用于迎接即將到來的請求。這樣客戶端就無需在得到服務前等候子進程的產生。在Unix系統中,父進程通常以root身份運行以便邦定80端口,而 Apache產生的子進程通常以一個低特權的用戶運行。User和Group指令用于配置子進程的低特權用戶。運行子進程的用戶必須要對他所服務的內容有 讀取的權限,但是對服務內容之外的其他資源必須擁有盡可能少的權限。
worker多線程多進程
2、worker.c模塊(支持混合的多線程多進程的多路處理模塊)
worker MPM 使用多個子進程,每個子進程有多個線程。每個線程在某個確定的時間只能維持一個連接。通常來說,在一個高流量的HTTP服務器上,Worker MPM是個比較好的選擇,因為Worker MPM的內存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,假如一個線程崩潰,整個進程就會連同其任何線程一起"死掉".由于線程共享內存空間,所以一個程式在運行時必須被系統識別為"每 個線程都是安全的"。
工作方式:
每個進程能夠擁有的線程數量是固定的。服務器會根據負載情況增加或減少進程數量。一個單獨的控制進程(父進程)負責子進程的建 立。每個子進程能夠建立 ThreadsPerChild數量的服務線程和一個監聽線程,該監聽線程監聽接入請求并將其傳遞給服務線程處理和應答。Apache總是試圖維持一個備 用(spare)或是空閑的服務線程池。這樣,客戶端無須等待新線程或新進程的建立即可得到處理。在Unix中,為了能夠綁定80端口,父進程一般都是以 root身份啟動,隨后,Apache以較低權限的用戶建立子進程和線程。User和Group指令用于配置
Apache子進程的權限。雖然子進程必須對 其提供的內容擁有讀權限,但應該盡可能給予他較少的特權。另外,除非使用了suexec ,否則,這些指令配置的權限將被CGI腳本所繼承。
轉載于:https://blog.51cto.com/cuanlf/1389282
總結
以上是生活随笔為你收集整理的apache的两种工作模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中实现不同文字颜色和图文混
- 下一篇: 网站页面设计基本尺寸