2012-12-17 103 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