Php 如何为多个站点配置APC?
我们在一台机器上运行多个站点,使用Php 如何为多个站点配置APC?,php,apc,Php,Apc,我们在一台机器上运行多个站点,使用apc.shm=4G。这不足以缓存所有内容,因此我们设置了apc.ttl=600,以便将未使用的条目逐出。目前还不清楚这是否按计划进行。我们可以看到大约91%的缓存命中率,但很快就会出现100%的碎片 我们还开始看到PHP没有响应,这需要Apache重新启动,但PHP或Apache日志中没有任何记录。在这段时间内,Apache仍然可以为静态文件提供服务,而不会出现任何问题。我的直觉告诉我这在某种程度上与APC的搅动有关。以下是当前设置: apc.cache_by
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.num_files_hint 1024
该指令告诉apc可能需要在其缓存中保留多少php文件
- 它用作散列键,因此建议将其设置为素数
- 如果你真的需要缓存4GB的php文件,这显然是不够的!(我猜是共享主机)
find /var/www -type f -name "*.php" |wc -l
当apache没有响应时,您可以使用
strace -tt -o output.txt <pid of apache>
strace-tt-o output.txt
使用服务器状态页面查找pid 没错,一台机器上的许多Drupal站点都是“共享主机”。我将尝试提高此值。谢谢