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