公文高手,超级方便的公文写作神器! 立即了解


PHP-CGI 进程 CPU 100% 解决办法

[文章作者:张宴本文版本:v1.0最后修改:2011.08.05转载请注明原文链接:http://blog.s135.com/file_get_contents/]

有时候,运行nginx、php-cgi(php-fpm)web服务的linux服务器,突然系统负载上升,使用top命令查看,很多php-cgi进程cpu使用率接近100%。后来,我通过跟踪发现,这类情况的出现,跟php的file_get_contents函数有着密切的关系。

大、中型网站中,基于http协议的api接口调用,是家常便饭。php程序员们喜欢使用简单便捷的file_get_contents("http://example.com/")函数,来获取一个url的返回内容,但是,如果http://example.com/这个网站响应缓慢,file_get_contents就会一直卡在那儿,不会超时。

我们知道,在php.ini中,有一个参数max_execution_time可以设置php脚本的最大执行时间,但是,在php-cgi(php-fpm)中,该参数不会起效。真正能够控制php脚本最大执行时间的是php-fpm.conf配置文件中的以下参数:

viewplainprint。

1.thetimeout(inseconds)forservingasinglerequestafterwhichtheworkerprocesswillbeterminated

2.shouldbeusedwhen'max_execution_time'inioptiondoesnotstopscriptexecutionforsomereason3.'0s'means'off'

4.0s

默认值为0秒,也就是说,php脚本会一直执行下去。这样,当所有的php-cgi进程都卡在file_get_contents函数时,这台nginx+php的webserver已经无法再处理新的php请求了,nginx将给用户返回“502badgateway”。修改该参数,设置一个php脚本最大执行时间是必要的,但是,治标不治本。例如改成30s,如果发生


(未完,全文共3017字,当前显示924字)

(请认真阅读下面的提示信息)


温馨提示

此文章为6点公文网原创,稍加修改便可使用。只有正式会员才能完整阅读,请理解!

会员不仅可以阅读完整文章,而且可以下载WORD版文件

已经注册:立即登录>>

尚未注册:立即注册>>

6点公文网 ,让我们一起6点下班!