WordPress 需要多少 RAM?
WordPress 本身需要的内存很少,其官方要求中也没有给出 RAM 数值。对小型网站来说,1-2 GB RAM 通常是个不错的起点(这是一条经验法则,会因网站而异)。网店、大量插件和高流量会把需求推高到 4 GB 甚至更多。
真正需要多少,取决于网站的类型:插件、流量、数据库大小,以及是否开启缓存。本文介绍官方给出的数字、什么在消耗内存,以及如何判断内存不够。
官方要求是怎么说的?
WordPress.org 上的主机要求页面(官方建议)要求 PHP 8.3 或更高版本、MariaDB 10.11 或 MySQL 8.0 及以上版本,并支持 HTTPS。它推荐使用 Apache 或 Nginx 作为 Web 服务器。该页面没有给出 RAM 数值。PHP 7.4 和 MySQL 5.5.5 等较旧的版本仍能运行,但页面指出它们已经停止维护,存在安全风险。全新安装时,请选择推荐的版本。
官方唯一的内存数字,是 PHP 分配给 WordPress 的限额。单站点安装时,默认的 WP_MEMORY_LIMIT 是 40 MB,多站点时是 64 MB。管理后台使用 WP_MAX_MEMORY_LIMIT,WordPress 核心默认会尝试把它提高到 256 MB。这些都是单个 PHP 请求的上限,而不是服务器的总 RAM。您可以在 Tools > Site Health > Info 下查看适用于您网站的数值:PHP 内存限制列在 Server 部分,而 WP_MEMORY_LIMIT 和 WP_MAX_MEMORY_LIMIT 出现在 WordPress Constants 部分。
到底是什么在占用 RAM?
- PHP 进程。每个同时发生的请求都会运行一个 PHP 进程。在 PHP-FPM 中,
pm.max_children限制同时可以运行多少个(见 PHP 手册)。取决于插件,一个进程可能占用几十到几百 MB。这是一个普遍观察,不同网站会有差别。 - 数据库。MariaDB 或 MySQL 会把经常读取的数据放在内存中。大型、插件很多的网站需要更多。
- 操作系统缓存。Linux 会把空闲内存用作磁盘缓存。在
free -h的输出中看到空闲内存很少并不是问题,请改看 available 一列。 - 缓存层。对象缓存(例如 Redis)能减少数据库查询,但它自己也会占用内存。
来看一个简单的例子。在一台 2 GB RAM 的服务器上,如果给操作系统和数据库留出约 1 GB,就剩 1 GB 给 PHP。如果一个 PHP 进程平均占用 100 MB,把 pm.max_children 设为 10 左右比较合理。这些数字只是为了说明计算方法,您自己的测量结果可能不同。
按网站类型的起步配置
这些数值是经验法则。它们会因插件和流量而异,并不是确切的承诺。
| 网站类型 | 起步 RAM | 备注 |
|---|---|---|
| 小型博客或展示型网站,插件很少 | 1-2 GB | 开启页面缓存 |
| 表单和图片很多的商业网站 | 2-4 GB | 压缩您的图片 |
| 页面构建器、会员网站、插件很多 | 4 GB | 更多无法缓存的页面 |
| 网店(WooCommerce) | 2-4 GB,随增长而增加 | 购物车和结账页面无法缓存 |
如果您要开网店,也请阅读我们的文章《为 WooCommerce 选择服务器》。
RAM 用完时会看到什么?
- 网站时不时返回 502 或 503 错误。PHP-FPM 或 Web 服务器无法响应。
- 出现“Error establishing a database connection”提示。数据库可能因内存耗尽而被停止。
- 管理后台变得非常慢,插件更新或图片上传卡在中途。
要确认这一点,请连接服务器并运行下面的命令:
free -h
sudo journalctl -k | grep -i -E "out of memory|oom-kill"
第二条命令会列出内核因内存耗尽而终止程序的事件。如果它输出了内容,说明 RAM 不够。在 top 中按 Shift+M,可以看到占用内存最多的进程。
升级之前可以先试试什么
- 设置页面缓存,可以用插件,也可以在服务器端设置。从缓存提供的页面既不运行 PHP,也不访问数据库。
- 删除不用的插件。每个启用的插件在每次请求时都会加载自己的代码。
- 根据内存调整 PHP-FPM 的
pm.max_children。大致上,用可以分给 PHP 的内存除以一个 PHP 进程的平均内存。设得过高,负载上来时会吃掉内存。 - 一小块 swap 空间能避免服务器在短暂的峰值中崩溃。但 swap 位于磁盘上,速度慢,所以它不能代替 RAM。
如果这些都试过了,内存仍然被占满,就该升级了。先测量:问题出现在高峰时段,还是全天都有?作为一般的阈值,如果高峰时段可用(available)内存经常低于总 RAM 的 10-15%,或者 swap 一直在使用,可以考虑升级。这不是硬性规定,只是一个起点。
在面板中升级
在 Seturack 面板中,用“配置”标签页上的滑块升级服务器。付款后服务器会自行重启一次,您的 IP 地址和数据保持不变。这让从小的配置开始成为一条稳妥的路。预装了 WordPress 的服务器大约 3.5 到 4 分钟即可就绪。请看看 WordPress 服务器页面。
评论0
暂无评论
成为第一个分享想法的人。
请登录或注册后发表评论。