使用APC優化Drupal時要注意的細節

歸類于服務器技術 參與評論

此前博文《drupal性能優化經驗貼》中提到,一般類似drupal這樣的PHP框架,我們為了提高性能必須要使用opcode來提高PHP的執行速度,PHP也有這樣的模塊。
我們都知道使用APC或者eAccelerator這樣的opcode緩存可以提高網站的性能,但要注意的是需要根據網站的規模做細節的調優,只使用默認設置,可能帶來的結果是性能還不如不用他們之前的效果。

這里要說的Case是,APC配置中有一項是shm_size,這是用來控制劃分多少內存給APC使用,用來緩存文件或者opcode,對于文件緩存,原理大概相當于,預先讀取到內存中緩存起來,下次再使用時就不需要占用磁盤I/O了,這個想法當然是很好的,依賴來說效果也是非常明顯的。但使用drupal做的大型項目,開啟的模塊是很多的,那就意味了需要加載的文件很多,他們放到一起占用的內存是很可觀的,一般APC默認的配置可能16M, 那么當文件緩存的內存占用超過16M之后,會有什么問題呢,帶來的問題是include_once這樣的函數花費很長時間決定如何加載文件,這里可能存在一些算法上的問題,需要覺得那些緩存丟棄,把新讀取的文件緩存放在內存中什么位置之類的,總之在這種情況下,APC反而會讓性能下降,大概下降3,4倍左右。

所以,在實際應用環境中,需要知道啟用了多少個模塊,需要提供大概多少內存,對于一個服務器提供多個站點,并且各個站點的Drupal是獨立目錄的場景中,因為APC的緩存機制,緩存所需內存更是成倍增加的。所以要么不用,用的話,一定要留出足夠的內存,另外eAccelerator也是同樣的道理,也許在內存溢出時,由于調度算法的差異,性能下降程度可能不一樣,但總是會有影響的。

因為本文只記錄了結論,沒有包含分析過程,大家可以參考一下原文的詳細分析。

High PHP execution times for Drupal, and tuning APC for include_once() performance

814 Views ,

頂部
四川时时彩投注平台