我已迁移到新的更快的服务器。经过一些严肃的调整后,旧服务器正在处理网站,新服务器虽然额外增加2g内存(总共4个),但在经过2天的各种调整后对请求的响应非常慢。我在FastCGI模式下运行PHP,错误日志中包含以下错误:
mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper
和一些
mod_fcgid: read data timeout in 200 seconds
CPU徘徊在40%左右,大约有80个进程产生,站点速度超慢,我尝试调整fcgid.conf但无济于事:
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule mod_fcgid.c>
<IfModule !mod_fastcgi.c>
AddHandler fcgid-script fcg fcgi fpl
</IfModule>
FcgidIPCDir /var/run/mod_fcgid/sock
FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm
FcgidIdleTimeout 200
FcgidProcessLifeTime 1000
FcgidMaxProcesses 5
FcgidMaxProcessesPerClass 10
FcgidMinProcessesPerClass 0
FcgidConnectTimeout 8
FcgidIOTimeout 200
FcgidInitialEnv RAILS_ENV production
FcgidIdleScanInterval 20
FcgidMaxRequestsPerProcess 500
FcgidBusyTimeout 300
</IfModule>
有什么建议吗?
编辑: 最佳结果
Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5379200k total, 1765840k used, 3613360k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
93睡觉????
答案 0 :(得分:2)
经过长时间的争斗,我发现罪魁祸首是旧的PHP代码,它将处理速度降低到了超时的程度。特别是我发现使用<?
而不是<?php
标签并且包含在其他文件中的文件执行时间很长。一旦替换为正确的<?php
。我还降级了PHP版本5.2.17,以避免大量关于弃用函数的通知和警告。之后,服务器开始飞行并且错误停止了。