2012-12-17 102 views
0

我有一個700 MHz的CPU非常慢的家庭服務器(覆盆子pi)。當我開發一些站點時,有時會發生我輸入一個大的(5 MB).jpg文件到圖像調整器(imagecreatefromjpeg()imagecreatetruecolor()imagecopy()),導致服務器掛起。如何限制apache2的資源?

我會說它正在處理文件,但即使當我等待幾分鐘,它永遠不會結束。

問題是我甚至無法訪問shell來停止/重新啓動apache2;唯一的解決方案是完全關閉服務器。

我想知道是否有任何方法來限制apache2的HW資源;例如,如果我可以限制80%的CPU使用率,也許我仍然可以訪問該shell並停止它。

我試着設置超時和max_execution_time指令,但它們似乎並沒有阻止apache2無限工作並凍結服務器。

任何想法如何解決這個問題?

回答

0

我不認爲你可以從自己的設置限制apache的CPU使用率。

您可以嘗試使用像請將CPULimit一個單獨的應用程序(見:how-to):

$ sudo apt-get install cpulimit 
$ man cpulimit 

您也可以嘗試這些優化您的服務器的整體性能。

  • 編輯您的/etc/apache2/apache2.conf中,並使用這些值:

    <IfModule mpm_prefork_module> 
        StartServers   2 
        MinSpareServers  2 
        MaxSpareServers  3 
        MaxClients   50 
        MaxRequestsPerChild 0 
    </IfModule> 
    
  • 展開在/ etc/dphys,交換文件設置你的交換:

    CONF_SWAPSIZE=512 
    

    然後運行:

    $ sudo dphys-swapfile setup 
    $ sudo dphys-swapfile swapon 
    
  • 在這裏超頻你的覆盆子(它比它聽起來更安全):

    $ sudo raspi-config 
    

    我在950MHz使用它。有一個更高的選擇(1000MHz),但在論壇上的一些人抱怨與那一個SD腐敗。

  • 如果您不使用圖形界面,也可以在raspi-config中將圖形內存設置爲16 0 memory_split

-1

您可以安裝apache-mod_ratelimit。另請參閱Control Apache with httpd.conf

+0

Apache mod_ratelimit用於客戶端的帶寬速率限制。 (請參閱:https://httpd.apache.org/docs/2.4/mod/mod_ratelimit.html) – aramboi

+0

也是RLimitCPU指令(請參閱:http://httpd.apache.org/docs/trunk/mod/core.html #rlimitcpu)限制子進程可以使用的cpu時間,以秒爲單位。它沒有爲該進程設置cpu限制,但在上述情況下仍可能有用。 – aramboi