WordPress

增加 WordPress 的内存限制

When WordPress or a plugin dies with a memory exhaustion error, the fix is to raise the PHP memory limit, and on Kapsule that is a dropdown in KPanel rather than a file edit. This guide covers what…

增加 WordPress 内存限制

当 WordPress 或插件因内存耗尽错误而崩溃时,解决办法是提高 PHP 内存限制。在 Kapsule 上,这是 KPanel 中的一个下拉菜单,无需编辑文件。本指南涵盖错误的含义、如何更改限制、选择哪个值以及当增加内存无法解决问题时该怎么做。

错误的样子

最清晰的形式是在页面上打印或写入错误日志的致命错误:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)

将字节数除以 1,048,576 以用兆字节表示:268435456 是 256 MB,134217728 是 128 MB。

它并不总是这样清晰地宣布自己。同样的根本问题表现为:

  • 完全空白的页面,没有任何消息,通常出现在一个特定的屏幕上。
  • WordPress 仪表板加载正常,但单个管理页面(插件、产品、站点健康)崩溃。
  • 媒体上传或导入进行到一半然后停止。
  • 仅在负载下出现的 500 错误。

在更改任何内容之前,请确认确实是内存问题。打开网站的高级,然后打开 PHP 选项卡,向下滚动到 PHP 错误日志,然后点击加载日志。这会显示带有级别过滤器的最后 200 条条目。内存耗尽错误显示为致命。如果日志为空,问题在别处:尝试 WordPress 白屏读取您的错误日志

在 KPanel 中更改限制

  1. 登录 KPanel,点击左侧边栏中的网站
  2. 点击要更改的网站。
  3. 在网站自己的菜单中,打开高级,然后打开 PHP
  4. 找到 PHP 设置卡片和内存限制行。
  5. 从下拉菜单中选择一个值:128M256M512M1024M2048M
  6. 点击保存设置

KPanel 中网站的 PHP 设置

无需重启,网站在整个过程中保持运行。您的设置被写入网站根目录中的 .user.ini 文件,由 KPanel 为您管理。

新值不一定在下一次页面加载时立即生效。服务器缓存 .user.ini 长达五分钟,所以如果旧限制仍然被报告,请等待几分钟后再次检查,然后再假设更改未生效。

同一卡片控制四个其他值,这些值通常需要与内存一起调整:

设置选项在以下情况下提高
内存限制128M 至 2048M致命内存错误、空白管理屏幕
最大执行时间30 至 600 秒导入、导出和报告生成停止到一半
最大上传大小16M 至 256M主题 zip 或视频被拒绝因过大
最大输入变量1000 至 10000大菜单、大表单、具有许多变体的产品

Post max size 未显示,因为 Kapsule 会自动设置它,始终比上传限制高 1 MB,因此携带限制大小文件的表单仍然适合。

选择哪个值

每个 Kapsule 网站的起点是 256M,这已经是 WordPress 默认值的两倍,对大多数网站来说足够了。仅当您遇到实际错误时才向上提升。

网站建议限制
轻主题上的宣传册网站或博客256M 足够
页面构建器主题上有 20 个或更多插件的网站256M,如果错误持续则改为 512M
WooCommerce 商店,适中的目录256M
WooCommerce 带订阅、许多变体或繁重的库存插件512M
多站点网络或大型会员网站512M 至 1024M

不要直接跳到 2048M。非常高的限制不会使网站更快:它让失控的插件在失败前消耗服务器的更多资源,这会将单个损坏的页面变成对每个访客都缓慢的网站。提升一级,重新测试,错误消失后立即停止。

在 wp-config.php 中设置限制

KPanel 下拉菜单设置服务器上限。WordPress 有自己的两个常量,可以请求内存达到该上限,一些文档会告诉您设置它们:

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

WP_MEMORY_LIMIT 适用于前端。WP_MAX_MEMORY_LIMIT 适用于通常需要更多资源的管理区域。在 wp-config.php 中的 /* That's all, stop editing! */ 行上方添加它们,使用文件中的内置编辑器,然后文件管理器,或通过 SFTP。

WordPress 常量永远不能超过服务器限制。当 KPanel 下拉菜单显示 256M 时,将 WP_MEMORY_LIMIT 设置为 1024M 会让您获得 256M 和虚假的修复感觉。始终先提高 KPanel 值。

对于大多数人来说,常量是不必要的。设置 KPanel 值并保持 wp-config.php 不变。

WooCommerce 说明

商店是超过 256M 的最常见原因。在 wp-admin 中的 WooCommerce 然后状态中检查商店自己对限制的看法:系统状态报告打印它可以看到的 PHP 内存限制,这是确认您的 KPanel 更改实际生效的好方法。

如果您运行以下任何一项,请提升至 512M:

  • 每个都有数十个变体的可变产品。
  • WooCommerce Subscriptions 或预订扩展。
  • 两个或更多支付网关插件同时处于活动状态。
  • 在后台运行的库存或会计同步。

WooCommerce 管理页面缓慢或超时通常是内存和执行时间的组合。同时将最大执行时间提升至 120 秒,并考虑 设置 WooCommerce 中的缓存选项。

也检查您的 PHP 版本

如果内存错误在 PHP 更改后立即开始,该版本本身可能涉及其中:旧插件在较新的运行时上可能泄漏很严重。同一选项卡顶部的 PHP 版本卡片显示网站正在运行的内容,并让您在 PHP 8.4、8.3、8.2 和 8.1 之间移动。

更改版本会重启网站的 PHP 池,所以预期会有几秒的停机时间。完整详情见 更改您的 PHP 版本

当增加内存无法解决时

提升限制两次仍然没有改进意味着某些东西消耗的内存超过了应有的。按顺序进行以下操作:

  1. 进行备份。进行备份,每次都这样做。
  2. 找到插件。成对地停用插件,而不是一次一个:关闭一半,重新测试,然后分割仍然失败的一半。您也可以在 WordPress 选项卡然后插件上使用插件安全模式,这会一次关闭每个插件而不删除任何插件数据。
  3. **测试主题。**暂时切换到默认 WordPress 主题。在每次页面加载时运行繁重查询的主题会产生完全相同的模式。
  4. **查看操作,而不是网站。**如果仅导入失败,问题是执行时间和批次大小,而不是内存。分块导入。
  5. **读取日志。**PHP 选项卡上的 PHP 错误日志命名用尽内存的文件和行,通常立即识别插件。

如果在 512M 和干净的插件测试后仍然困惑,请发送电子邮件至 support@kapsulehost.com,附上网站域名、精确的致命错误行以及发生时您正在做的事情。

仍需帮助?

请发送邮件至 support@kapsulehost.com 或在 KPanel 中打开聊天。

打开 KPanel