【问题标题】:Can PHP 'out of memory' error be caused by MySQL server limitation?PHP 'out of memory' 错误可能是由 MySQL 服务器限制引起的吗?
【发布时间】:2018-03-25 09:11:08
【问题描述】:

我正在使用 AWS 托管我们的一些 WP (WordPress) 实例,其中一个这样的 WP 实例由于用于本地化的插件之一而经常崩溃(apache 日志指向该插件)。该插件以适度的内存消耗而闻名,他们在论坛中提供的唯一解决方案是提高 PHP 内存限制。我为每个 WP 实例分配了 PHP 内存限制,并将有问题的 WP 实例的内存限制从 256MB 增加到 1024MB。但问题仍然存在,似乎内存增加没有任何区别。我继续收到以下错误,

[Wed Oct 11 18:35:23.613853 2017] [proxy_fcgi:error] [pid 32458:tid 140165586614016] [client 157.55.39.157:17401] AH01071: Got error 'PHP message: PHP Fatal error:  Out of memory (allocated 20971520)
(tried to allocate 589824 bytes) in /htdocs/wp-content/plugins/wpml-string-translation/classes/filters/db-cache/class-wpml-st-db-translation-retrieve.php on line 186\n'
[Wed Oct 11 18:37:32.626994 2017] [proxy_fcgi:error] [pid 1040:tid 140165435545344] [client 157.55.39.157:12926] AH01071: Got error 'PHP message: PHP Fatal error:  Out of memory (allocated 46137344) (
tried to allocate 8192 bytes) in /htdocs/wp-includes/wp-db.php on line 1851\nPHP message: PHP Fatal error:  Out of memory (allocated 46137344) (tried to allocate 36864 bytes) in /htdocs/wp-includes/functions.php on line 3721\n'

现在,在上面的日志中有趣的是,第一个条目总是与有问题的插件(WPML)相关,而下一个条目指向 wp-db.php 文件。

我确实知道 PHP 内存消耗和管理是如何发生的,但我想知道“内存不足”是否真的可能是由 MySQL 服务器限制引起的。我正在使用 AWS RDS 实例来托管数据库。可能是数据库服务器规范不足以造成瓶颈并导致 PHP 内存不足问题,因此我对 PHP 内存大小所做的更改并不重要,因为问题出在数据库服务器端?

【问题讨论】:

  • 没有。显然是一些 WordPress 错误。
  • 是的,也许是您在 Wordpress 中“杀死”您的记忆的功能之一(可能是 CRON ?)。尝试调试您的 Wordpress
  • @Paul,当您说“是”时,您是否建议我查看我的 MySQL 服务器?感谢有关 WP CRON 的提示,我确实在 apache 日志中看到了很多与 WP CRON 相关的条目。我现在按照一种方法禁用 WP CRON 并使用 crontab 运行它。
  • 很适合 crontab。好多了。关于我的“是的”,实际上,您必须找到一种方法来分析数据库的使用情况。关于 NewRelic 的答案是一个非常有效的解决方案(但不是免费的:))。也许您的托管经理监控您的数据库。尝试与他们联系。

标签: php mysql wordpress amazon-web-services memory


【解决方案1】:

“我确实知道 PHP 内存消耗和管理是如何发生的,但我想知道“内存不足”是否实际上可能是由 MySQL 服务器限制引起的。我正在使用 AWS RDS 实例来托管数据库。”

通常不会,如果您在 RDS 上弹出内存,那么您会在 AWS 控制台上的 RDS 监控中清楚地看到这一点。检查看看你还剩下什么。

我接下来要做的是将一些监控放入托管 WordPress 的盒子中。

假设您可以完全访问诸如

之类的盒子工具

https://www.newrelic.com

https://docs.newrelic.com/docs/agents/php-agent/frameworks-libraries/wordpress-specific-functionality

https://www.datadog.com

仅举两个流行版本的服务器监控软件。它们应该可以帮助您识别消耗盒子内存的过程和时间。这应该可以帮助您更深入地识别您遇到的问题,并清楚地指出是什么导致了内存泄漏或占用了盒子上的所有内存。

hths,

詹姆斯

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 1970-01-01
    • 2018-08-01
    • 2019-11-30
    • 2021-01-01
    • 1970-01-01
    • 2020-08-14
    • 2019-03-20
    • 2016-12-05
    相关资源
    最近更新 更多