2016-10-03 203 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中的“数据库备份”。

相关问题