高CPU mod_fcgid:无法应用进程槽

时间:2013-09-05 16:39:03

标签: warnings cpu mod-fcgid

我收到以下警告:

  

mod_fcgid:无法应用进程槽   的/ var / WWW /的cgi-bin / cgi_wrapper / cgi_wrapper

一旦出现此警告,服务器CPU就会上升到97% - 101%

服务器每天获得大约140K的综合浏览量。此警告主要出现在11:00-12:00左右 除了通过Google Analytics计算的140K综合浏览量外,它还会向第三方网站发出请求,这些网站会在其网站上显示文字广告。大约2700个网站正在显示一个广告,并且每小时共向服务器发出22139个请求。

我试过:chmod 755 /var/log/httpd但/ var / log

中没有“httpd”文件夹

我尝试将MaxSpareServers和MaxClients调整为任何可能的高值。但根本没有效果。在Apache重新启动之后,它似乎很好一段时间(服务器仍然响应有点慢并且警告不再出现在日志文件中)。但过了一会儿,同样的警告出现了,CPU再次升起。

如果有人有建议,请告诉我,谢谢大家。

1 个答案:

答案 0 :(得分:31)

此警告告诉您FastCGI进程池已用尽,并且它具有FcgidMaxProcesses的全局限制和每个脚本限制FcgidMaxProcessesPerClass(请参阅http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxprocesses)。

可以使用以下信息调整此池的大小:

  • 如果您的应用程序受CPU限制并且您不希望它变慢,则将FcgidMaxProcesses设置为服务器上的CPU核心数;服务器平均负载将在高峰时间趋向于此数字。您的服务器将在没有任何减速的情况下为客户端提供服务,但也会拒绝一些要跟上的请求。拒绝记录在服务器端“无法应用进程槽”,在客户端看为503错误
  • 在(常见)情况下,您的应用程序不完全受CPU限制,例如,它等待数据库服务器用于回复(或其他I / O或远程资源)的公平数量,您可能使FcgidMaxProcesses略高于您的CPU核心数量。根据经验,我从CPU内核数量的两倍开始,然后检查一整天的峰值平均负载(一周更好)。然后调整直到它达到平均峰值。 load = CPU核心数。

在任何情况下,FcgidMaxProcesses(1000)的默认值都是令人发指的。你跑一个哑巴'ab -c100 -n10000

为了确定,让我用另一种方式说明:“无法应用进程槽”错误是正常错误,因为您的服务器具有固定数量的资源,这些限制可能会受到影响。如果你把这个限制推到高位。对于您的服务器资源,警告可能永远不会再出现,但您的服务器将在负载下崩溃。

而BTW,MaxSpareServers和MaxClients与您的问题无关,它们管理Apache进程池,而不是FastCGI进程池。这是另一个话题。