Apache是一個跨平臺的web服務器,因爲其簡單高效、穩定安全的特性,被普遍應用於計算機技術的各個領域。如今,Apache憑藉其龐大的用戶數,已成爲用戶數排名產列的web服務器。儘管如此,在實際的生產環境中,咱們仍然不可能直接使用默認配置的Apache來充當服務器。畢竟,爲了更充分合理地利用Apache服務器,咱們都應該根據本身的實際須要對Apache的默認配置做出一些必要的調整。而針對Apache的優化配置過程當中,修改Apache的最大併發鏈接數就顯得尤其重要。web
MPM是Multi-Processing Modules,表示Apache中的多路處理模塊,目前在Linux上的Apache2.2/2.4中包括三種模式:prefork、worker和event模式。apache或httpd的命令參數「-l」便可列出當前apache中已經編譯了的模塊,因爲MPM只能在編譯時指定其中一種,因此列出的靜態模塊中MPM只有1個,以下所示:apache
查看何種工做模式
httpd -l安全
修改apache的配置文件(rpm安裝方式)
<IfModule prefork.c>
StartServers 8
MinSpareServers 5->8
MaxSpareServers 20
ServerLimit 256->500
MaxClients 256->500
MaxRequestsPerChild 4000->10000
</IfModule>服務器
重啓apache服務
/etc/init.d/httpd restart併發
具體解釋:
StartServers
啓動Apache時建立的子進程數。推薦設置:小=默認 中=20~50 大=50~100性能
MinSpareServers
處於空閒狀態的最小子進程數。所謂空閒子進程是指沒有正在處理請求的子進程。若是當前空閒子進程數少於MinSpareServers,那麼Apache將以最大每秒一個的速度產生新的子進程。只有在很是繁忙機器上才須要調整這個參數。此值不宜過大。推薦設置:與StartServers保持一致優化
MaxSpareServers
處於空閒狀態的最大子進程數。只有在很是繁忙機器上才須要調整這個參數。此值不宜過大。若是你將該指令的值設置爲比MinSpareServers小,Apache將會自動將其修改爲MinSpareServers+1。推薦設置:小=20 中=30~80 大=80~120線程
MaxClients
容許同時鏈接的最大請求數量。任何超過MaxClients限制的請求都將進入等待隊列,直到達到ListenBacklog指令限制的最大值爲止。對於非線程型的MPM(也就是mpm_prefork),MaxClients表示能夠用於處理客戶端請求的最大子進程數量,默認值是256。要增大這個值,你必須同時增大ServerLimit。對於線程型或者混合型的MPM(也就是mpm_beos或mpm_worker),MaxClients表示能夠用於處理客戶端請求的最大線程數量。線程型的mpm_beos的默認值是50。對於混合型的MPM默認值是16(ServerLimit)乘以25(ThreadsPerChild)的結果。所以要將MaxClients增長到超過16個進程才能提供的時候,你必須同時增長ServerLimit的值。推薦設置:小=500 中=500~1500 大型=1500~3000rest
ServerLimit
表示Apache容許建立的最大進程數。值得注意的是,Apache在編譯時內部有一個硬限制ServerLimit 20000(對於mpm_prefork模塊爲ServerLimit 200000)。你不能超越這個限制。 使用這個指令時要特別小心。若是將ServerLimit設置成一個高出實際須要許多的值,將會有過多的共享內存被分配。若是將ServerLimit和MaxClients設置成超過系統的處理能力,Apache可能沒法啓動,或者系統將變得不穩定。 注意:在配置相關參數時,請先保證服務器具有足夠的硬件性能(例如:CPU、內存等)。 若是發現自啓動後,隨着服務器的運行時間增長,服務器的內存佔用也隨之增長,多是程序中出現內存泄露,請向下調整參數MaxRequestsPerChild的值以下降內存泄露帶來的影響,而後儘快找出程序中的問題之所在。推薦設置:與MaxClients保持一致blog
MaxRequestsPerChild推薦設置:小=10000 中或大=10000~500000