Apache連接數設置
以下為引用的內容: <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> |
prefork的工作原理是這樣的:控制進程在最初建立StartServers個子進程后, 為了滿足MinSpareServers設置的需要,創建一個進程,等待一秒鐘,繼續創建第二個,等待一秒鐘,繼而創建四個,如此按指數級增加創建的進程數,最多達到每秒32個,直到滿足MinSpareServers設置的值為止,這也就是預派生(prefork)的由來。這種模式可以使得不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。
axSpareServers 設置了最大的空閑進程數,如果空閑進程數大于這個值,Apache會自動kill某些多余進程。這個值一般不要設的過大,但如果設的比MinSpareServers小,Apache會自動把它調整為MinSpareServers+1。如果站點負載較大的話,可考慮同時加大MinSpareServers和MaxSpareServers。
MaxRequestsPerChild設置的是每個子進程可以處理的請求數。每個子進程在處理了MaxRequestsPerChild個請求后將自動銷毀。0意味著無限,即子進程永不銷毀。雖然缺省設為0可以使每個子進程處理更多的請求,但如果設成非零值也有兩點重要的好處:
1、可防止意外的內存卸漏;
2、在服務器負載下降的時侯會自動減少子進程數。
因此,可根據服務器的負載來調整這個值,如果非零的話,筆者認為10000左右是比較合適的。事實上這個值對Apache的性能影響不是很大。
MaxClients 是這些指令中最為重要的一個,它設定的就是Apache可以同時處理的請求,這是對Apache性能影響最大的參數.在我個人看來,缺省的150是遠遠不夠的,如果請求總數已達到這個值(可通過ps –ef|grep httpd|wc –l來確認),那么下面的請求就要排隊,直到某個已處理請求完畢。這就是為什么系統資源還剩下很多,而http訪問卻很慢的主要原因。系統管理員可以根據硬件配置和負載情況來動態調整這個值,雖然理論上這個值越大,可以處理的請求就越多,但Apache默認的限制是不能大于256。如果把這個值設為大于256那么Apache將無法起動。事實上,256對于負載稍重的站點也是很不夠的。在Apache1.3中這是個硬限制,如果要加大這個值,必須在configure前手工修改源代碼樹下的src/include/httpd.h,查找256,會發現#define HARD_SERVER_LIMIT 256這行,把256改為你要增大的值如4000,然后重新編譯Apache即可。我想這個方法稍有些經驗的Apache系統管理員都知道,不過我相信在Apache2.0中知道如何加大這個值的人就不會太多了。
在Apache2.0中新加入了ServerLimit指令,使得無須重編譯Apache就可以加大MaxClients。下面是筆者的prefork配置段。
以下為引用的內容: <IfModule prefork.c> StartServers 10 MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 1500 MaxRequestsPerChild 10000 </IfModule> |
BTW: ServerLimit的最大值是20000,這對于大多數站點是足夠了,但如果你一定要再加大的話,那么這個值位于源代碼樹下的server/mpm/prefork/prefork.c中。里面的
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 20000
這兩行就對應著MaxClients和ServerLimit的限制值。但我相信很少有人可以用到20000的并發連接數。
關鍵字:Apache、連接數、進程
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解