优化APC缓存

问题描述:

这里是怎么我的APC正在运行的链接:[删除]优化APC缓存

正如你所看到的,它很快填满了我的缓存完全统计越过1000有时

我的网站使用WordPress的。

我注意到,每次我发布新帖子或编辑帖子时,都会发生2件事。

1)APC记忆“中使用的”重置 2)我收到了一大堆碎片的

我试图让更多的内存APC(512 MB),但随后有时会崩溃,看来384是最好的。我还有一个Cron作业,可以每4小时重新启动apache,清除碎片和已用内存的所有APC。同样,如果APC运行了很长一段时间,我的Apache会崩溃,我认为是由于碎片堆积。

我应该使用apc.Filters并过滤掉一些不应该被缓存的东西吗?

我真的是这类东西的初学者,所以如果有人可以用完整的说明解释,非常感谢!

APC ttl应该照顾碎片堆积。我通常将它设置为7200,我在一个小VPS与WordPress运行它,我的设置是:

apc.enabled=1 
apc.shm_segments=3 
apc.shm_size=32 
apc.ttl=7200 
apc.user_ttl=7200 
apc.num_files_hint=2048 
apc.mmap_file_mask=/tmp/apc.XXXXXX 
apc.enable_cli=1 
apc.max_file_size=10M 

您还将通过使用从它那里得到了很多好处的WordPress内置的对象缓存和马克·贾基斯写一个非常好的drop in plugin,当保存或编辑帖子时,这也应该有助于解决一些碎片问题。

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

退房文件第一:http://php.net/manual/en/apc.configuration.php

我作为一个Linux系统管理员的工作,WordPress的服务器运行5周不同的WordPress安装。如果你只运行一个,我会评论配置考虑。

APC/PHP版本,3.1.9/5.3.7

这里是我的完整apc.conf,

apc.enabled=1 
apc.shm_segments=1 

; I would try 32M per WP install, go from there 
apc.shm_size=128M 

; Relative to approx cached PHP files, 
apc.num_files_hint=512 

; Relative to approx WP size W/ APC Object Cache Backend, 
apc.user_entries_hint=4096 

apc.ttl=7200 
apc.use_request_time=1 
apc.user_ttl=7200 
apc.gc_ttl=3600 
apc.cache_by_default=1 
apc.filters 
apc.mmap_file_mask=/tmp/apc.XXXXXX 
apc.file_update_protection=2 
apc.enable_cli=0 
apc.max_file_size=2M 

;This should be used when you are finished with PHP file changes. 
;As you must clear the APC cache to recompile already cached files. 
;If you are still developing, set this to 1. 
apc.stat=0 

apc.stat_ctime=0 
apc.canonicalize=1 
apc.write_lock=1 
apc.report_autofilter=0 
apc.rfc1867=0 
apc.rfc1867_prefix =upload_ 
apc.rfc1867_name=APC_UPLOAD_PROGRESS 
apc.rfc1867_freq=0 
apc.rfc1867_ttl=3600 

;This MUST be 0, WP can have errors otherwise! 
apc.include_once_override=0 

apc.lazy_classes=0 
apc.lazy_functions=0 
apc.coredump_unmap=0 
apc.file_md5=0 
apc.preload_path 

@Chris_O,你的配置是不是在几个最佳方面。

1 apc.shm_segments = 3

如果你运行一个现代的Linux发行版,你SHM应sufficiantly足够大。 如果它太小搜索如何设置sysctl.conf条目,你可以这样检查。

#Check Max Segment size 
cat /proc/sys/kernel/shmmax 

在某些BSD或其他Unix或您不控制的托管主机上运行时出现异常。没有连续的细分市场存在缺点,请阅读该信息的APC细节。

2. apc.enable_cli = 1

很坏很坏的坏,这仅仅是为了调试!每次运行php-cli时,它都会清除APC缓存。

3 apc.max_file_size = 10M

不必要的,可笑!如果你有一个很大的文件,它将吃掉那个小型32M SHM的1/3。尽管你指定了3,但它们并不仅仅表现为三部分中的一个大部分。无论WP甚至没有单个PHP文件甚至接近这个尺寸。

'希望我帮助人们用他们的apc.conf。

+1

是的,你帮了! – markus 2011-12-18 20:30:39

+1

@TechZilla,我使用Yii框架,它大量使用类的延迟加载,所以我应该启用apc.lazy_classes和apc.lazy_functions,它可以影响其他任何东西吗? – 2012-05-02 06:44:25

+2

@Uday Sawant:APC的延迟加载与Yii框架中的延迟加载不同。 Yii是专门以“懒惰”的方式编写的,而APC则是通常加载“懒惰”的。特别是Yii,我仍然会将这些减速度保持为'0'。手册的“懒惰”加载可能在没有外部干扰的情况下表现得最好。我还想提及那些APC减速仍然是相当新的,并且在我考虑设置'1'之前需要更多的测试/统计/成熟度。 – TechZilla 2012-05-02 10:26:00