LinuxApache prefork 優化 - 選擇正確的
Apache prefork 優化 - 選擇正確的 MaxRequestsPerChild
值
我正在嘗試優化我們的網路伺服器以處理盡可能多的連接。我閱讀了很多文章和 Apache 筆記。我試圖了解我應該為
MaxRequestsPerChild
.起初,我嘗試將其設置為 4,000,但伺服器在處理許多請求時遇到了困難,所以我開始提高它。目前我的設置是:
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 40000 </IfModule>
將 設置
MaxRequestsPerChild
為 40,000 後,伺服器設法在不使用更多記憶體/cpu 的情況下處理更多連接。誰能告訴我這個值是太高還是可以有這麼高的值?
謝謝!
作業系統資訊:
[root@web06 ~]# uname -a Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux [root@web06 ~]# free total used free shared buffers cached Mem: 3814660 3502968 311692 0 144368 2970468 -/+ buffers/cache: 388132 3426528 Swap: 5210104 0 5210104
MaxRequestsPerChild
在執行動態腳本時,它實際上只對限制記憶體洩漏量有用。如果您只是提供靜態內容或非常小/簡單的腳本,那麼您可以將其設置為 0 或非常高而不會產生太大影響。如果您正在執行更大/複雜的腳本,那麼將其設置為 0/high 將導致您的 Apache 程序消耗越來越多的記憶體。具體多少取決於您的具體應用。另一方面,將其設置得非常低實際上可能會導致稍微增加 CPU 使用率,因為 Apache 程序會不斷地重新啟動。
我會做一個簡單的測試,看看你的程序可以使用多少記憶體。設置
MaxRequestsPerChild
為 0 並重新啟動 Apache。測試載入幾個頁面並查看 Apache 程序使用的初始大小top
。幾小時/幾天/幾週後再次檢查(取決於您的應用程序和頁面瀏覽量),看看它是如何增長的。如果它沒有增長太多,那麼 0 或非常大的值MaxRequestsPerChild
應該沒問題。如果您為 Apache 程序設置了最大大小(即,您希望它們為 50MB 或更少),那麼您可以對不同的值進行相同的測試,
MaxRequestsPerChild
直到找到一個使 Apache 小於該值的值。