1. 程式人生 > >修改apache的最大連接數

修改apache的最大連接數

都是 高流量 最大 font 空間 ins 有關 物理內存 for

實時查看連接數

watch -n 1 -d "pgrep httpd|wc -l"

幾經周折終於知道了。

首先

由於是yum安裝的

vi /etc/httpd.conf

發現

技術分享

加載conf.modules.d/下面的所有配置文件,找到

vi 00-mpm-conf

技術分享

默認加載prefork模塊

所有找到

vi httpd-mpm.conf 修改其中的

技術分享

需要根據自己機器的cpu 內存綜合考慮

連接數理論上當然是支持越大越好,但要在服務器的能力範圍內,這跟服務器的CPU、內存、帶寬等都有關系。

查看當前的連接數可以用:
ps aux | grep httpd | wc -l
或:
pgrep httpd|wc -l

計算httpd占用內存的平均數:
ps aux|grep -v grep|awk ‘/httpd/{sum+=$6;n++};END{print sum/n}‘

StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 5500
MaxClients 5000
MaxRequestsPerChild 100

僅做參考

apache的幾種工作模式的 比較

Prefork MPM:這個多路處理模塊(MPM)實現了一個非線程型的、預派生的web服務器,它的工作方式類似於Apache 1.3。它適合於沒有線程安全庫,需要避免線程兼容性問題的系統。它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。

這個MPM具有很強的自我調節能力,只需要很少的配置指令調整。最重要的是將MaxClients設置為一個足夠大的數值以處理潛在的請求高峰,同時又不能太大,以致需要使用的內存超出物理內存的大小。

Worker MPM:此多路處理模塊(MPM)使網絡服務器支持混合的多線程多進程。由於使用線程來處理請求,所以可以處理海量請求,而系統資源的開銷小於基於進程的MPM。但是,它也使用了多進程,每個進程又有多個線程,以獲得基於進程的MPM的穩定性。

每個進程可以擁有的線程數量是固定的。服務器會根據負載情況增加或減少進程數量。一個單獨的控制進程(父進程)負責子進程的建立。每個子進程可以建立ThreadsPerChild數量的服務線程和一個監聽線程,該監聽線程監聽接入請求並將其傳遞給服務線程處理和應答。

不管是Worker模式或是Prefork模式,Apache總是試圖保持一些備用的(spare)或者是空閑的子進程(空閑的服務線程池)用於迎接即將到來的請求。這樣客戶端就不需要在得到服務前等候子進程的產生。

prefork和worker模式的比較
prefork模式使用多個子進程,每個子進程只有一個線程。每個進程在某個確定的時間只能維持一個連接。在大多數平臺上,Prefork MPM在效率上要比Worker MPM要高,但是內存使用大得多。prefork的無線程設計在某些情況下將比worker更有優勢:它可以使用那些沒有處理好線程安全的第三方模塊,並且對於那些線程調試困難的平臺而言,它也更容易調試一些。

worker模式使用多個子進程,每個子進程有多個線程。每個線程在某個確定的時間只能維持一個連接。通常來說,在一個高流量的HTTP服務器上,Worker MPM是個比較好的選擇,因為Worker MPM的內存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一個線程崩潰,整個進程就會連同其所有線程一起"死掉".由於線程共享內存空間,所以一個程序在運行時必須被系統識別為"每個線程都是安全的"。

總的來說,prefork方式速度要稍高於worker,然而它需要的cpu和memory資源也稍多於woker。

修改apache的最大連接數