linux+php5.3版本出现错误死锁解决
来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 03:35 点击:次
PHP-fpm/cgi 搭配 APC或xcache碰到死锁的解决办法。
一台机器一直跑 PHP 5.3.x (fpm或fastcgi方式),常常不定时发生死锁现象。
表现为 FCGI 服务连不上,NGINX报告 502 bad gateway,这时系统里的 php 进程其实都还在,但都卡在 futex() 这一系统调用上,很明显发生死锁了。
查了一些资料,发现这个BUG早在2年前就有人提交过了,至今似乎没有妥善的解决办法,原因在于锁住资源时如果发生脚本超时,则时PHP内部通过 longjmp 跳转来关闭请求,导致锁无法正确释放。
目前在PHP5.3可以在 php.ini 中增加 exit_on_timeout = On 来解决,意思是当发生超时就索性把进程杀死,以便让系统回收这类锁资源,避免死锁。
作者“linux”
相关新闻>>
- 发表评论
-
- 最新评论 更多>>