2016-10-03 22 views
1

我最近在我的WordPress網站上注意到我有時會收到500內部服務器錯誤。我檢查日誌,我有很多線,如:WordPress致命錯誤:允許的內存大小536870912字節耗盡(試圖分配77字節)在wp-includes/wp-db.php上線1832

[Mon Oct 03 01:25:24.357439 2016] [fcgid:warn] [pid 12840] [client 83.27.211.107:36968] mod_fcgid: stderr: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 77 bytes) in /var/www/vhosts/mywebsite/public_html/wp-includes/wp-db.php on line 1832

我試圖增加內存限制:

define('WP_MAX_MEMORY_LIMIT' , '512M');

define('WP_MEMORY_LIMIT' , '512M');

甚至更​​多,但沒有奏效。無論我如何設置它仍然超過內存限制一些字節。我認爲對數據庫的某些查詢存在問題,但如何檢查哪些?

內容的包括/可溼性粉劑db.php中的:

} else { 
    $num_rows = 0; 
    if ($this->use_mysqli && $this->result instanceof mysqli_result) { 
     while ($row = mysqli_fetch_object($this->result)) { 
      $this->last_result[$num_rows] = $row; 
      $num_rows++; 
     } 
    } elseif (is_resource($this->result)) { 
     // server crashing at line below 
     while ($row = mysql_fetch_object($this->result)) { 
      $this->last_result[$num_rows] = $row; 
      $num_rows++; 
     } 
    } 

    // Log number of rows the query returned 
    // and return number of rows selected 
    $this->num_rows = $num_rows; 
    $return_val  = $num_rows; 
} 
+0

所以問問自己**爲什麼**你需要在RAM中緩存500 + megs的數據。如果你需要,那麼你的選擇是提高/刪除內存限制,或重建你的系統,所以你不需要同時在內存中那麼多東西。否則,你基本上會問:「我把10升水倒進一個1升的水桶裏,水溢出了,我怎麼能讓它溢出來?」 –

+0

您自己的服務器或虛擬主機? – markratledge

+0

@MarcB,你不明白。我在我的網站上有一個錯誤。這是簡單的WordPress網站,5個小部件,菜單和帖子循環(每頁20個)。我不知道爲什麼這個超過內存的限制。 –

回答

1

該問題是由iThemes安全插件引起的。我關掉它,錯誤消失了。我會更多地調查這個問題,並編輯這個答案,如果我知道這個插件的哪個部分導致超出內存限制。

0

恆定WP_MEMORY_LIMIT規定了所有PHP進程爲WordPress用於前和後端RAM。在共享主機上使用此功能。常數WP_MAX_MEMORY_LIMIT僅規定後端的RAM。如果知道有足夠的RAM並且可以使用它,則可以使用WP_MAX_MEMORY_LIMIT,例如在您管理的VPS服務器上。

回到

define('WP_MAX_MEMORY_LIMIT' , '128M'); define('WP_MEMORY_LIMIT' , '64M');

,並刪除這些查詢正在運行(上圖),看看該網站恢復正常。如果是這樣,那就是問題;處理這些查詢是一個不同的問題。

如果這是共享主機,您正在使用這些查詢來查殺服務器;如果這是您自己的服務器,則需要配置MySQL/PHP進行緩存和高負載。

+0

對我來說,他是複製/粘貼核心WP文件。如果事實證明這是罪魁禍首,我會感到驚訝。 – RST

+0

我編輯了我的帖子。我忘了提及我發佈的代碼的一部分來自wp-incudes/wp-db.php。所以,我不知道導致此錯誤的查詢在哪裏。也許它來自一個插件,該網站幾周前正常工作。 –

+0

@RST,是的,我忘了提及。抱歉。 –

1

我有「上線1832的wp-db.php中」和禁用如之前提到工作對我來說很好的iThemes安全插件有同樣的問題。但是,如果您仍然需要保護您的網站,這不是解決方案。

你需要做的是修復的關鍵領域,如可溼性粉劑內容目錄權限,WP-包括等..

轉到的iThemes安全設置 - >文件權限(配置設置)並檢查是否所有權限都設置正確。一旦你修復了他們應該的權限,你就不會再看到這個錯誤了。

+0

這是導致OOM的iThemes安全性的「數據庫備份」。純粹禁用該功能應該沒問題。 –

0

禁用iThemes Security中的「數據庫備份」。

相關問題