记录一下xcache导致的php-fpm 502问题
admin
2023-06-17 01:21:30
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来处理进行禁用。

有如下代码段

        if (xc_var_caches) {
for (i = 0; i < xc_var_hcache.size; i ++) {
if (xc_var_caches[i].cached) {
xc_var_caches[i].cached->disabled = now;
}
}
}

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


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


相关内容

热门资讯

特朗普提了一个非分要求 都是网络上的P图,看看挺有意思的明明知道会被拒绝,但特朗普还是提了一个非分的要求。甚至事先协商也没协...
菲总统马科斯访日,菲律宾民众在... 【环球时报报道 记者 邢晓婧】菲律宾总统马科斯26日抵达日本,开启为期4天的访日行程。据菲律宾ABS...
国家安全部提示:这些码不能随便... 扫码关注,扫码支付,扫码登录……二维码已融入我们工作、生活的方方面面,为我们提供了巨大便利。然而,国...
伊比莱瑞取得不锈钢粉末自动注射... 国家知识产权局信息显示,东莞市伊比莱瑞科技有限公司取得一项名为“一种不锈钢粉末自动注射成型装置”的专...
星链涨价5倍,五角大楼和Spa... 【文/观察者网 熊超然】随着亿万富翁马斯克拥有的“星链”(Starlink)网络引导美制自杀式无人机...
人民日报刊文:妄图洗白成“解放... 妄图洗白成“解放者”,日本注定徒劳(环球走笔)牛瑞飞 《人民日报》(2026年05月27日 第 15...
AI支付时代要来了吗?支付宝A... 【大河财立方 记者 杨霄 王宇】5月26日,在支付宝AI支付生态大会上,支付宝宣布,“AI支付”已完...
毫厘间的山河:0.001%背后... 元素周期表的版图上,锌,是一块古老而平凡的疆域。但当它的纯度跃升至99.998%时,这块金属便被赋予...
朝鲜进行新型武器系统试射 当地时间5月26日,朝鲜导弹总局和国防科学院进行轻型多用途导弹发射系统和多管战术巡航导弹武器系统试验...
原创 华... 华为各大产品全面发展,而且是多系列多版本,其中手机/笔记本均拥有4个系列,平板/手表均拥有6个系列,...