高CPU mod_fcgid:无法应用进程槽

Ren*_*ann 14 cpu warnings mod-fcgid

我收到以下警告:

mod_fcgid:无法为/ var/www/cgi-bin/cgi_wrapper/cgi_wrapper应用进程槽

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

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

我试过了:chmod 755 /var/log/httpd但/ var/log中没有文件夹"httpd"

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

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

zer*_*eux 32

此警告告诉你的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进程池.这是另一个话题.

  • 我在这种"优化公司"工作.投掷Nginx可能有所帮助,但它不是一个自动解决方案.直到今天,我只知道1个案例(真的是数百个),我无法配置Apache,因为它不是瓶颈.Apache非常高效且可预测,但它不是炒作.大多数人说"使用Nginx而不是"根本就没有关于Apache的线索这并不复杂且记录完备. (3认同)