温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

记录一下xcache导致的php-fpm 502问题

发布时间:2020-05-26 20:01:38 阅读:719 作者:270192891 栏目:web开发
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

现象是,只要用PHP cli模式跑脚本,网站立马就502。

查看错误日志,看到的是“child 31457 exited on signal 7 (SIGBUS) after 0.384581 seconds from start” 

打开ulimit,查看core dump,发现是xcache导致。

网上查了一下,有说xcache是不支持cli模式的,但是在官方wiki里似乎没有看到说明的样子?

ps 对应的php版本是5.4.45,安装的xcache 版本是 3.2.0,没有深入尝试,不知道其他版本有没有这个问题。

对照core dump查看源代码,过程如下:

1 在mod_cacher/xc_cacher.c 495行,执行这一句 if (!cache->cached->disabled && XG(request_time) >= cache->cached->last_gc_expires + (time_t) gc_interval) 时出错,抛出异常。

2 捕获到异常,调用xcache.c 中的 xcache_signal_handler 进行处理,发现设置了“崩溃则禁用”的选项,调用mod_cacher/xc_cacher.c中的xc_cacher_disable来处理进行禁用。

有如下代码段

  注意到循环时使用的是xc_var_hcache.size,而并不是xc_var_caches的实际大小,这样是有风险的,除非能确保两者一致。最终,错误发生在xc_var_caches[i].cached->disabled = now;这一句,具体的原因,现在还没有去找,等有时间调试打印一下,,再更新文章,可以的话提交个BUG给xcache。

果断换ZendOptimizerPlus,没有出现问题了。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×