加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – APC一直在崩溃

发布时间:2020-12-13 13:53:26 所属栏目:PHP教程 来源:网络整理
导读:我们正在使用APC 3.1.9运行 PHP 5.3.8,并且正在使用操作码缓存以及用户缓存.目前,当缓存大小增加时,我们遇到了常规崩溃.它看起来像是APC中的某种内存泄漏,因为缓存文件中缓存变量的值大小不等于总缓存大小.总缓存大小要大得多,比如1GB,而加起来的值大约为400
我们正在使用APC 3.1.9运行 PHP 5.3.8,并且正在使用操作码缓存以及用户缓存.目前,当缓存大小增加时,我们遇到了常规崩溃.它看起来像是APC中的某种内存泄漏,因为缓存文件中缓存变量的值大小不等于总缓存大小.总缓存大小要大得多,比如1GB,而加起来的值大约为400MB.

这是消息日志所述的内容:
12月19日10:17:54四分之一内核:pid 97940(httpd),uid 1004:退出信号11(核心转储)

所以我用gdb检查了coredump:

(gdb) backtrace  
   #0  0x000000080202cc3c in zend_hash_index_find (ht=0x805251ef0,h=34490315800,pData=0x7fffffffc378) at      /usr/local/directadmin/custombuild/php-5.3.8/Zend/zend_hash.c:983  
   #1  0x0000000805132637 in my_copy_zval () from /usr/local/lib/php/extensions/no-debug-non-zts-20090626/apc.so  
   #2  0x00000008051322fb in my_copy_zval_ptr () from /usr/local/lib/php/extensions/no-debug-non-zts-20090626/apc.so  
  #3  0x0000000805133aea in my_copy_hashtable_ex () from /usr/local/lib/php/extensions/no-debug-non-zts-20090626/apc.so

zend_hash.c中的行号(983)对应于一个动作(p = ht-> arBuckets [nIndex];),其中它解决了哈希表中的一个键,它显然不再存在.这或多或少支持我的某个内存泄漏理论,其中apc缓存填满了非法信息……

有人知道吗?

用apc_add切换每个apc_store调用后,’zombie’内存的问题就消失了.可能与使用apc_fetch和apc_store的竞争条件有关,如 http://notmysock.org/blog/php/user-cache-timebomb.html所述.

建议使用apc_add,尤其是这些调用是用户生成的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读