跳至正文
目录
WordPress

增加 WordPress 内存限制

此内容为机器翻译,如需查阅原文请查看英语版本。

当 WordPress 或某个插件因内存耗尽而崩溃时,解决办法是提高 PHP 内存限制,而在 KapsuleHost 上,这是 KPanel 中的一个下拉选项,而不是需要编辑文件。本指南将说明这个错误的含义、如何修改限制值、应该选择哪个数值,以及当增加内存仍无法解决问题时该怎么办。

错误信息的样子

最明显的形式是页面上打印出来或写入错误日志的一条致命错误:

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

将字节数除以 1,048,576 即可换算为 MB:268435456 是 256 MB,134217728 是 128 MB。

它并不总是如此明确地表现出来。同样的底层问题还可能表现为:

  • 完全空白的白屏,没有任何提示信息,通常只出现在某一个特定页面上。
  • WordPress 仪表盘能正常加载,但某个具体的后台页面(插件、产品、网站健康)却崩溃。
  • 媒体上传或导入进行到一半就停止。
  • 仅在负载较高时才出现的 500 错误。

在做出任何更改之前,请先确认问题确实出在内存上。打开网站的 设置,然后点击 PHP 选项卡,滚动到 PHP错误日志,点击 加载日志。这会显示最近 200 条记录,并带有级别筛选器。内存耗尽错误会以 Fatal 的形式出现。如果日志为空,说明问题出在别处:可以参考WordPress 白屏问题和读懂您的错误日志。

在 KPanel 中修改限制值

  1. 登录 KPanel,点击左侧边栏中的 网站。
  2. 点击您要修改的网站。
  3. 在该网站自己的菜单中,打开 设置,然后进入 PHP。
  4. 找到 PHP 设置 卡片以及 内存限制 一行。
  5. 从下拉菜单中选择一个数值:128M、256M、512M、1024M 或 2048M。
  6. 点击 保存设置。

KPanel 中某网站的 PHP 设置界面,可在此选择内存限制

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

新的数值并不总是在下一次页面加载时立即生效。服务器会对 .user.ini 进行最长五分钟的缓存,因此如果显示的仍是旧的限制值,请等待几分钟后再检查,不要急于认定更改没有生效。

同一个卡片中还控制着另外四个经常需要和内存一起调整的数值:

设置项可选范围需要提高的情形
内存限制128M 至 2048M出现内存致命错误、后台页面空白
最大执行时间30 至 600 秒导入、导出及报表生成进行到一半就停止
最大上传大小16M 至 256M主题压缩包或视频文件因过大而被拒绝
最大输入变量1000 至 10000菜单项很多、表单很大、产品含大量变体

此处未显示 Post max size,因为 KapsuleHost 会自动设置该值,始终比您的上传限制高出 1 MB,这样即使表单携带的文件达到上限,也仍然能够提交。

应该选择哪个数值

每个 KapsuleHost 网站的初始值都是 256M,这已经是 WordPress 默认值的两倍,对绝大多数网站来说都已足够。只有在实际出现错误时才需要调高。

网站类型建议的限制值
使用轻量主题的宣传页面或博客256M 已经足够
使用页面构建器主题且插件数量在 20 个以上的网站先用 256M,若仍出错再调到 512M
商品目录规模适中的 WooCommerce 商店256M
带订阅功能、变体众多,或使用重度库存插件的 WooCommerce512M
多站点网络或大型会员网站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 适用于后台管理区域,后台通常需要更多内存。请使用内置编辑器(设置,然后 文件管理器)或通过 SFTP,将这两行添加到 wp-config.php 文件中 /* That's all, stop editing! */ 这一行的上方。

WordPress 的常量永远不能超过服务器的限制值。如果 KPanel 下拉菜单中显示的是 256M,却将 WP_MEMORY_LIMIT 设置为 1024M,那么实际得到的仍然只是 256M,您只会误以为问题已经解决。请始终先提高 KPanel 中的数值。

对大多数人来说,这两个常量是不必要的。只需设置好 KPanel 中的数值,不必去动 wp-config.php。

WooCommerce 注意事项

商店类网站是超过 256M 的最常见原因。可以在 wp-admin 中的 WooCommerce,然后 Status 页面查看商店自身看到的限制值:系统状态报告会打印出它所看到的 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 选项卡下的 Plugins 中的 Plugin safe mode,它会一次性关闭所有插件,但不会删除任何插件数据。
  3. 测试主题。暂时切换到 WordPress 默认主题。如果某个主题在每次页面加载时都运行大量重度查询,就会产生这种现象。
  4. 关注具体操作,而不是整个网站。如果只有导入操作失败,问题通常出在执行时间和批处理大小上,而不是内存。请尝试分批进行更小规模的导入。
  5. 查看日志。PHP 选项卡中的 PHP错误日志 会指出耗尽内存时所运行的文件和行号,通常能立即定位到问题插件。

如果在调高到 512M 并完成插件排查测试后问题依然存在,请发送邮件至 support@kapsulehost.com,并附上网站域名、确切的致命错误信息行,以及问题发生时您正在进行的操作。

这对您有帮助吗?

您是 AI 吗?以 Markdown 格式阅读本页

相关文章

安装 WordPressWordPress是全球使用最广泛的建站平台,KapsuleHost让安装过程实现了自动化。本指南将介绍两种安装方式、如何管理您的登录凭据、如何访问管理面板,以及全新安装完成后应采取的…WordPress:从何处开始KapsuleHost 为 WordPress 网站做了什么、哪些工作仍需您自己完成,以及每项工作应阅读哪份指南。 WordPress 支撑着大半个互联网,也是大多数 KapsuleHost 网站的默认选择。…WordPress 自动更新Auto-updates 让 WordPress 核心、插件和主题保持最新,而无需您留意发布说明,并且这一过程是安全的:每次更新前都会进行完整备份,更新后会检查网站,任何破坏网站的情况都会被…WooCommerce 商店的支付网关支付网关标签页列出了您的WooCommerce商店可用的支付网关,显示哪些已安装、哪些已启用,并提供一键安装和启用功能,让您的商店从无结账功能在几分钟内变为可以接受银行卡支付。…

仍未解决?

询问了解您账户的 Kora,或联系我们的团队。

联系我们发送邮件