Nov28

【原创】关于APCU序列化在PHP7中使用的注意事项

Author: leeon  Click: 4567   Date: 2016.11.28 @ 11:25:18 am Category: php

这两天线上服务器fpm频繁coredump,strace跟踪到php返回

write(2, "zend_mm_heap corrupted\n", 23) = 23

当时以为是php内核内存触发的bug,由于线上环境部署的是最新版本的php7+phalcon3,所以刚开始是怀疑新版本的程序的兼容性问题,但是在线下环境下模拟还原线上的所有基础环境时发现并不是如此,故一一比对线上的不同,发现运维在配置文件中使用了与线下不同的配置项,我们的程序同时用到了apcu的扩展,发现运维在配置的时候指定了apcu的序列化方法:
apc.serializer=igbinary
采用的是igbinary算法,但是我们线上新部署的环境中并没有支持到这个算法的扩展,故导致了问题发生。
解决方法为从pecl中下载igbinary扩展,安装并配置到ini文件中即可。
备注:
原先运维在使用php5.6的时候并没有直接编译igbinary,但是配置文件中依然指定了igbinary,php5.6进程并不会发生coredump如果igbinary不存在就会跳过采用原生的序列化,但php7针对igbinary的判断应该做了改变。



TAG:   php apcu php7

    评论
    • 提交

    分类

    标签

    归档

    最新评论

    Abyss在00:04:28评论了
    Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
    shallwe99在10:21:17评论了
    【原创】如何在微信小程序开发中正确的使用vant ui组件
    默一在09:04:53评论了
    Berkeley DB 由浅入深【转自架构师杨建】
    Memory在14:09:22评论了
    【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
    leo在17:57:04评论了
    shell中使用while循环ssh的注意事项

    我看过的书

    链接

    其他

    访问本站种子 本站平均热度:8823 c° 本站链接数:1 个 本站标签数:464 个 本站被评论次数:94 次