Apache prefork模式和worker模式參數詳解

prefork模式和worker模式參數詳解php

使用httpd -l命令查看使用的線程模塊,通常是prefork.c和work.c二者,前者居多。肯定後修改http配置文件相應的部分,如prefork.c的:mysql

<IfModule prefork.c>
StartServers 5
MinSpareServers 3
MaxSpareServers 10
ServerLimit 16
MaxClients 16
MaxRequestsPerChild 2000
</IfModule>

其中配置項:
web

StartServers : 服務啓動時啓動進程數sql

MinSpareServers : 最小空閒進程,隨時等待響應shell

MaxSpareServers:最大空前進程,響應結束時,減小進程安全

ServerLimit:最大進程數,多線程

MaxClients:同時響應的最大請求數,多出等待併發

# MaxClients=ServerLimit*進程的線程數。線程

MaxRequestsPerChild:每一個進程請求這麼屢次後就釋放從新創建(爲0時永遠不釋放)。設計


1.對於perfork.c模塊,其特色是

每一個子進程只有一個線程。每一個進程在某個肯定的時間只能維持一個鏈接。在大多數平臺上,Prefork MPM在效率上要比Worker MPM要高,可是內存使用大得多。prefork的無線程設計在某些狀況下將比worker更有優點:它可使用那些沒有處理好線程安全的第三方模塊。

既然是一個進程一個線程,因此在prefork.c下,這兩個值是相等的。注:ServerLimit最大值爲2000.

2.對於work.c模塊來講,是多線程的,默認是一個進程有25個線程,所以若是設置ServerLimit爲100,那麼MaxClients最大能夠設置爲2500。

這裏說說咱們可憐的vps,爲了省錢通常只有512m-1g的內存,而prefork.c一個進程佔用30-45m左右的內存(這個值跟php- fpm下php-cgi內存佔用至關),因此若是有512m的內存話,系統+mysql(最小節約配置)吃掉250m左右,剩下的內存也就是跑10個進 程,因此這個值真的是很可憐,不過對於流量小的站點,這個併發也夠用了,通常跑個上千的流量不是問題。因此作web服務,有錢仍是多弄點內存的好,或者跑 lnmp是比較合適的選擇。

相關文章
相關標籤/搜索