zoukankan      html  css  js  c++  java
  • php报错 "zend_mm_heap corrupted"

    一:环境介绍
    阿里云 [machao@gksn]$ cat
    /etc/redhat-release CentOS Linux release 7.0.1406 (Core)
    本地有测试环境和线上环境,线上环境放在svn
    [machao@iZ233xdnwmfZ ~]$ php -v
    PHP 5.6.20 (cli) (built: Apr  9 2016 20:40:37)
    Copyright (c) 1997-2016 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies


    参考文档:https://stackoverflow.com/questions/2247977/what-does-zend-mm-heap-corrupted-mean

    二:报错内容

    网站的一个功能突然不能用了,点击进去显示 ‘502 Bad Gateway'   但是测试环境正常

    当时第一反应以为nginx的问题,网络原因,看了下nginx状态,刷新游览器页面还是不行。又想到网站的其他页面都是好好的,然后检查php-fpm.log的错误文件

    tail -f /usr/local/php56/var/log/php-fpm.log

    [16-May-2018 11:30:28] WARNING: [pool www] child 32494 said into stderr: "zend_mm_heap corrupted"
    [16-May-2018 11:30:28] WARNING: [pool www] child 32494 exited with code 1 after 534.670302 seconds from start
    [16-May-2018 11:30:32] WARNING: [pool www] child 32521, script '/web/zwbi/admin/public/index.php' (request: "GET /index.php") executing too slow (5.745961 sec), logging

    三:解决方法

    1.内存问题

    打开php.ini文件找到下面两行 增大output_buffering 的值    或者 关闭此选项或者在命令行执行export USE_ZEND_ALLOC=0  ps:不用USE_ZEND_ALLOC性能会急剧下降,这是php自带的内存管理机制

     vim /usr/local/php56/etc/php.ini

    output_buffering = On
    output_buffering = 25600

    重启php-fpm

    sudo systemctl restart  /usr/local/php56/sbin/php-fpm
    2.怀疑是权限的问题

    chown -R www.www filename && chmod 777 filename

    可是还是502

    3.检查nginx错误日志和php-fpm.log日志

    [06-Mar-2018 15:54:57] WARNING: [pool www] child 30396 said into stderr: "zend_mm_heap corrupted"
    [06-Mar-2018 15:54:57] WARNING: [pool www] child 30396 exited with code 1 after 239.805753 seconds from start
    • 1
    • 2

    百度,谷歌查询了一些链接,“”确定是opcache模块的问题“,”当时觉得基本可以解决了。但是我把opcache整个模块注释掉还是没用。链接贴在下面,没有解决我的问题,可能对朋友们会有帮助。

    https://stackoverflow.com/questions/2247977/what-does-zend-mm-heap-corrupted-mean 
    https://github.com/websharks/comet-cache/issues/705

    4.觉得是一些依赖组件的问题,遂把测试环境的composer包等更新到正式环境,测试仍然失败。测试失败后还原组件(做这些操作一定要记得备份,随时还原)。

    5.到这里和开发产生分歧了。我觉得是代码运行可能有问题,比如bug或者关联的某文件权限。开发觉得是我环境的问题。说干就干,一次性设置正式环境所有文件的权限。

    sudo chown -R www.www /web/xxx

    到了这里,问题依然没有解决

    6.代码问题

    开发回退之前代码版本,问题解决

    7:注释:

    1.线上代码不要放在SVN,会有很多坑。以前的运维把很多项目都放在线上,导致出了很多坑。令我深恶痛绝。 
    (1)比如文件权限,svn更新文件以后,文件属主和属组会变成root。访问就会失败。 
    (2)多一层SVN客户端又多了造成各种文件锁的情况

  • 相关阅读:
    Ubuntu安装搜狗sougou输入法
    gradle windows 环境变量
    Gradle 使用Maven本地缓存
    Java 命令后台运行jar包
    spark 2.1.0 集群安装
    hadoop 2.7.3 集群安装
    springboot + shiro + cas4.2.7 实战
    cas4.2以下取消https
    cas4.2.7 取消https
    springboot 中使用websocket简单例子
  • 原文地址:https://www.cnblogs.com/mclzy/p/9045951.html
Copyright © 2011-2022 走看看