我们在一台计算机上运行了许多网站,其中apc.shm = 4G
。这不足以缓存所有内容,因此我们设置apc.ttl= 600
以便将未使用的条目逐出。目前尚不清楚这是否按计划运作。我们看到良好的缓存命中率约为91%,但很快就会出现100%的碎片。
我们也开始看到PHP无响应,需要重启Apache,但PHP或Apache日志中没有记录任何内容。在此期间,Apache仍然可以提供静态文件而不会出现问题。我的直觉告诉我这与APC的流失有某种关系。以下是当前设置:
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 0
apc.lazy_functions 0
apc.max_file_size 1M
apc.mmap_file_mask /dev/zero
apc.num_files_hint 1024
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.serializer default
apc.shm_segments 1
apc.shm_size 4G
apc.slam_defense 1
apc.stat 1
apc.stat_ctime 0
apc.ttl 600
apc.use_request_time 1
apc.user_entries_hint 4096
apc.user_ttl 7200
apc.write_lock 1
几个问题:
我们修改了apc.ttl
,但没有同时更改apc.gc_ttl。降低此值有助于更快地清除文件并减少碎片吗?
我们最好离开apc.ttl = 0
并让每次缓存填充时APC为空并重建?
提前致谢!
答案 0 :(得分:0)
apc.num_files_hint 1024
这个指令告诉apc它可能要保留在缓存中的php文件数量。
所以请首先在这里放一个更大的数字,就像一个略大于这个值的素数:
find /var/www -type f -name "*.php" |wc -l
当apache无响应时,您可能有机会通过使用
来处理处理PHP脚本的apache进程来了解正在发生的事情。strace -tt -o output.txt <pid of apache>
使用服务器状态页面查找pid。