有人來問到底前陣子發生什麼事情,那就順便寫一下。前陣子的伺服器延遲狀況,其實是因為同時開兩個WordPress,然後為了要多使用外掛,因此我將記憶體的分配調得過高,以至於達到虛擬主機資源的上限,反而讓多人連線的時候無法分配到資源,因此常常處於「連線中」但是網頁出不來的狀況。
- 這個問題為何會出來?
WordPress升級到2.8之後,預設的32MB記憶體往往不夠使用,這個時候會看到如下的錯誤,會在什麼地方看到並不一定,基本上累加超過你的記憶體上限就會出現了。
Fatal error: Allowed memory size of 33554432 bytes exhausted
因此要手動開啟更多記憶體分配給WP,至於要如何開啟,依照你的伺服器不同,會有幾個方法。
- 分配更多記憶體的方法
一般網路上建議的主要方法:
- WP2.8是將wp-setting.php中的define(‘WP_MEMORY_LIMIT’, ’32M’);後面的32M給改成更大的數值即可。
- WP2.9左右在wp-config.php中也加入了這條參數,當然也是一併修改。不過我的伺服器不適用這個方法。
- 另外一個分配更多記憶體的方法
我的伺服器必需要在各個目錄中,都要新增一個php.ini的檔案,內容如下,就這樣一行就好。
memory_limit = 64M
這樣的話就可以分配更多資源給WP,不過虛擬主機一個用戶能分到的資源,往往是主機的幾十分之一,要更多的資源,必需要用VPS這樣的東西。因此像我一次兩個網誌開成兩倍的情況下,等於耗用原本四倍的資源,上限本身就不高的情況下,自然會排擠到其他用戶的使用,導致連線狀況變得緩慢。
因此我就把*yonglan:F那邊的記憶體修改檔全部停止,*yonglan這邊的略為提高,改成「memory_limit = 40M」,這樣讓主機有比較多的資源能分配給各用戶,所以速度感覺起來就回復到原來的狀況。
我開的外掛應該不算多,*yonglan這邊三個(備份+阻擋廣告+Google分析),*yonglan:F那邊四個(備份+阻擋廣告+Google分析+首頁的特效),可見和WP本身變得巨大也有關係。