2010-08-25 161 views
17

這裏是怎麼我的APC正在運行的鏈接:[刪除]優化APC緩存

正如你所看到的,它很快填滿了我的緩存完全統計越過1000有時

我的網站使用WordPress的。

我注意到,每次我發佈新帖子或編輯帖子時,都會發生2件事。

1)APC記憶「中使用的」重置 2)我收到了一大堆碎片的

我試圖讓更多的內存APC(512 MB),但隨後有時會崩潰,看來384是最好的。我還有一個Cron作業,可以每4小時重新啓動apache,清除碎片和已用內存的所有APC。同樣,如果APC運行了很長一段時間,我的Apache會崩潰,我認爲是由於碎片堆積。

我應該使用apc.Filters並過濾掉一些不應該被緩存的東西嗎?

我真的是這類東西的初學者,所以如果有人可以用完整的說明解釋,非常感謝!

回答

10

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,當保存或編輯帖子時,這也應該有助於解決一些碎片問題。

41

我作爲一個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