2014-06-24 76 views
3

我們在一臺機器上運行多個站點,其中有一個apc.shm = 4G。這對緩存所有內容是不夠的,所以我們設置apc.ttl= 600,以便未使用的條目被驅逐。目前尚不清楚這是否按計劃進行。我們看到〜91%的高速緩存命中率,但100%的分段速度非常快。如何爲許多網站配置APC?

我們也開始看到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 

幾個問題:

  1. 我們修改apc.ttl,但同時並沒有改變apc.gc_ttl。降低此值是否可幫助更快地清除文件並減少碎片?

  2. 如果我們離開apc.ttl = 0,我們會更好嗎,並讓APC每次緩存填充時都清空並重建?

在此先感謝!

回答

0
apc.num_files_hint 1024 

該指令告訴apc它可能需要保留在他的緩存中有多少個php文件。

  • 它用作哈希鍵,這樣使得它的質數建議
  • 這顯然是不夠的,如果你真的有緩存的PHP文件4GB! (共同主辦我猜)

,請通過把更大的身影在這裏,就像一個質數超過此值稍大開始:

find /var/www -type f -name "*.php" |wc -l 

你可能有機會了解發生了什麼事情通過stracing apache進程正在處理你的PHP腳本當Apache去反應遲鈍,使用

strace -tt -o output.txt <pid of apache> 

發現使用服務器狀態頁的PID。

+0

正確,很多Drupal網站在一臺機器上就是這樣的'共享主機'。我會嘗試提高這個值。謝謝。 – Vincent