標籤:並且 pac 地方 基於 派生 fonts 在伺服器 子進程 它的
即時查看串連數
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的最大串連數