我的 Wordpress 博客网站通常每分钟有 200 个用户,但是如果每分钟用户加载量低于 1000 个,我的网站就会变得非常慢,并且此警告会出现在我的 error_log 中。
[Sun Aug 17 16:44:41 2014] [warn] [client **.***.**.***] mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper
有时还会伴随以下两个警告:
[Sun Aug 17 16:44:41 2014] [warn] [client ***.***.***.**] mod_fcgid: read data timeout in 45 seconds
[Sun Aug 17 16:44:41 2014] [error] [client ***.***.**.**] Premature end of script headers: index.php
我检查了服务器状态,CPU、内存和负载水平均低于 30%。
服务器信息:
CPU GenuineIntel, Intel(R) Xeon(R)CPU L5630 @ 2.13GHz
Version Parallels Plesk Panel v11.5.30_build115130819.13 os_CentOS 5
OS CentOS 5.5 (Final)
Memory 5.89 GB
Prefork.c:
<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 3
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 4000
</IfModule>
防火墙标识配置文件
FcgidIdleTimeout 40
FcgidProcessLifeTime 30
FcgidMaxProcesses 20
FcgidMaxProcessesPerClass 8
FcgidMinProcessesPerClass 0
FcgidConnectTimeout 30
FcgidIOTimeout 45
FcgidInitialEnv RAILS_ENV production
FcgidIdleScanInterval 10
此警告的原因是什么?我该如何解决它?
答案1
你见过吗http://www.cloudlinux.com/blog/clnews/perfecting-fastcgi-settings-for-shared-hosting.php?
FcgidMaxProcesses——这是 FCGID 将为所有用户启动的进程总数。这将防止出现 OOM 问题。RAM 越多,您可以设置的数值就越高。如果将此值设置得太低,您将收到 500 错误,因为 FCGID 将无法创建新的进程来处理请求。此值还取决于 PHP 进程的大小(这又取决于您为 PHP 启用的扩展),因为进程越大,您越快遇到 OOM。您可以尝试使用以下数字,具体取决于您的 RAM:8GB——大约 150,16GB——300 另外,请确保您监控 apache 错误日志。如果您看到“无法应用进程槽来处理错误”——则表示您已达到 FcgidMaxProcesses
尝试将 FcgidMaxProcesses 增加到 150