我在运行php 5.3.3的CentOS服务器5上运行APC(php缓存)在一个中型网站上(每天13000次访问),APC 3.1.4和4Gb内存.在过去的几周里,我unable to allocate memory for pool
在日志中遇到了很多" "错误,而且网站经常出现故障.
我认为问题出在APC.从统计数据中我看到缓存在一两个小时后已满,并且碎片总是跳到100%.这是我的apc.ini配置设置:
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统计数据我可以看到缓存文件的数量非常高(40 000),这是由于phpbb和mediawiki的过多缓存文件.我是否必须阻止APC缓存此文件apc.filters
?这个问题有解决方案吗?
您真的应该在生产服务器上设置apc.stat = 0,这将阻止APC实际进入IO以检查文件是否已更改.
也设置了apc.slam_defense = 0,因为它已被弃用
查看其他选项的文档:http://php.net/manual/en/apc.configuration.php