首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >APC缓存碎片问题

APC缓存碎片问题
EN

Stack Overflow用户
提问于 2010-10-06 20:35:59
回答 2查看 7.1K关注 0票数 4

我在一个中型网站(每天13000次访问)上运行APC (php cache),在CentOS服务器5上运行php 5.3.3,APC 3.1.4,内存4 4Gb。在过去的几周里,我在日志中遇到了许多"unable to allocate memory for pool“错误,而且网站经常会宕机。

我认为问题出在APC上。从统计数据中,我看到缓存在一两个小时后就满了,并且碎片总是跳到100%。以下是我对apc.ini的配置设置:

代码语言:javascript
复制
apc.cache_by_default    1
apc.canonicalize    0
apc.coredump_unmap  0
apc.enable_cli  0
apc.enabled 1
apc.file_md5    0
apc.file_update_protection  2
apc.filters 
apc.gc_ttl  3600
apc.include_once_override   0
apc.lazy_classes    00
apc.lazy_functions  0
apc.max_file_size   1M
apc.mmap_file_mask  /dev/zero
apc.num_files_hint  0
apc.preload_path    
apc.report_autofilter   0
apc.rfc1867 0
apc.rfc1867_freq    0
apc.rfc1867_name    APC_UPLOAD_PROGRESS
apc.rfc1867_prefix  upload_
apc.rfc1867_ttl 3600
apc.shm_segments    1
apc.shm_size    512M
apc.slam_defense    1
apc.stat    1
apc.stat_ctime  0
apc.ttl 7200
apc.use_request_time    1
apc.user_entries_hint   0
apc.user_ttl    7200
apc.write_lock  1

从APC统计数据中,我可以看到缓存文件的数量非常高(40000),这是由于phpbb和mediawiki缓存文件过多造成的。我必须阻止APC使用apc.filters缓存这个文件吗?有没有解决这个问题的办法?

EN

回答 2

Stack Overflow用户

发布于 2010-10-17 22:14:45

你真的应该在你的生产服务器上设置apc.stat=0,它将阻止APC去IO检查文件是否已经改变。

还应设置apc.slam_defense=0,因为它已被弃用

查看其他选项的文档:http://php.net/manual/en/apc.configuration.php

票数 7
EN

Stack Overflow用户

发布于 2011-07-07 22:25:50

我认为你应该为文件支持的mmap设置apc.mmap_file_mask =/tmp/ APC - your usernamehere.XXXXXX;通过添加你唯一的字符串来使文件掩码唯一;XXXXXX (恰好是6X)必须保持不变,以允许APC添加随机字符串,或者如果你可以节省内存的话,对于匿名mmap设置为/dev/0。

我可以看到您使用的是/dev/zero,它不必要地占用了内存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3872463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档