服务器环境:红帽Linux 5.5,nginx,PHP fastcgi
在这种环境下,php-cgi一般运行非常稳定,但也遇到过php-cgi占用cpu资源过多,导致服务器响应缓慢的情况。php-cgi进程占用过多cpu资源的原因如下:
php的部分扩展与php版本不兼容:实践证明EACelerator与部分php版本的兼容性存在问题。具体表现就是启动php-cgi进程后,运行10多分钟,速度极慢,但是静态资源访问很快,服务器负载正常(说明nginx没有问题,是php-cgi进程的问题)。解决方案是从php.ini中禁用EACelerator模块,并重新启动php-cgi进程。
程序中可能存在无限循环,导致服务器负载极高(使用top指令负载高达100)。需要借助Linux的proc虚拟文件系统找到具体的问题程序。
php程序不合理地使用会话。这件事发生在开源微博编年史狗程序上。具体表现为少量php-cgi进程(不超过10个)cpu利用率超过98%,服务器负载在4-8之间。要解决这个问题,还是需要借助Linux的proc文件系统来找出原因。
程序中存在过度耗时和不可能的操作(或者程序的问题)。