1核2G内存跑两个 WordPress,说实话,这在资源上属于“极限操作”。如果不做优化,稍微来点并发流量或者一个插件触发内存泄漏,服务器直接 OOM(Out Of Memory)重启是常态。
要在国内主流云厂商(阿里云、腾讯云、华为云等)的 1C2G 实例上稳住两个 WP,核心思路只有三个:极致压缩 PHP 内存占用、数据库读写分离与缓存前置、静态化一切能静态化的东西。
以下是经过实战验证的配置清单,按优先级排序:
一、 操作系统层面:给系统“减负”
-
Swap 分区必须开,但要合理设置
- 2G 物理内存太少了,必须加 Swap 防止突发流量导致进程被杀。
- 建议设置 2G-4G 的 Swap 文件。
vm.swappiness设置为 10 或 20,让系统优先使用物理内存,而不是频繁交换到磁盘。
-
关闭不必要的服务
- 如果是 CentOS/Ubuntu,卸载或禁用
firewalld/ufw(改用云安全组),停止auditd、bluetooth、postfix等非必要后台服务。 - 确保只运行 Nginx/Apache, MySQL/MariaDB, PHP-FPM。
- 如果是 CentOS/Ubuntu,卸载或禁用
-
文件系统选择
- 如果云盘支持,使用 ext4 或 xfs。避免在老旧机械硬盘上做高 IOPS 操作。SSD 云盘是必须的,否则数据库 IO 会成为瓶颈。
二、 Web 服务器:Nginx 优于 Apache
强烈建议使用 Nginx + PHP-FPM 架构。Apache 的 prefork 模式极其吃内存,每个连接都占一个进程,1C2G 根本扛不住。
-
Nginx 配置优化
- 开启
gzip压缩,减少传输体积。 - 配置静态资源(图片、CSS、JS)过期时间长达 30 天以上。
- 开启
keepalive,减少 TCP 握手开销。 - 限制单个 IP 的连接数和请求速率(防 CC 攻击简单版)。
- 开启
-
PHP-FPM 调优(关键!)
- 进程管理器:设置为
ondemand而非dynamic。因为dynamic需要主进程常驻,而ondemand在无请求时不产生子进程,极大节省内存。 - pm.max_children:这是最关键的参数。1C2G 环境下,建议设为 5-8。每个 PHP 进程默认可能占用 30-50MB 内存,开太多必崩。
- pm.process_idle_timeout:设为 10s-20s,快速回收空闲进程。
- PHP 版本:务必使用 PHP 7.4 或 8.0+。PHP 8 在性能上有显著提升,且内存管理更优。
- 进程管理器:设置为
三、 数据库:MySQL/MariaDB 的“抠门”设置
MySQL 默认配置对 2G 内存来说太奢侈了。你需要手动修改 my.cnf (或 mariadb.conf)。
-
关键参数调整
[mysqld] # 最大连接数设低一点,WP 通常不需要几百个并发 max_connections = 50 # 关键:InnoDB Buffer Pool 大小 # 总内存 2G,扣除 OS 和其他应用,留给 MySQL 最多 1G-1.2G # 建议设为 512M - 768M,留有余地 innodb_buffer_pool_size = 768M # 日志相关 log_error_verbosity = 2 slow_query_log = 1 long_query_time = 2 # 临时表 tmp_table_size = 16M max_heap_table_size = 16M注意:不要盲目追求大 Buffer Pool,如果其他服务也吃内存,会导致系统整体不稳定。
-
字符集统一
- 确保所有库、表、字段都是
utf8mb4,避免转换开销。
- 确保所有库、表、字段都是
四、 WordPress 应用层:轻量化是王道
-
主题选择
- 放弃 Elementor、Divi 等重型页面构建器。它们会产生大量 CSS/JS 和数据库查询。
- 推荐使用轻量级主题:GeneratePress、Astra(精简模式)、Flavor 或纯代码编写的极简主题。
-
插件瘦身
- 缓存插件:推荐 W3 Total Cache 或 WP Super Cache。对于 1C2G,对象缓存(Object Cache) 比页面缓存更重要。
- 对象缓存:安装 Redis 插件,并将 Redis 作为对象缓存后端。Redis 本身非常轻量,几 MB 内存就能解决大量数据库重复查询问题。
- 清理冗余插件:删除所有未使用的插件。每多一个活跃插件,就多一次钩子(Hook)执行和潜在的内存泄漏风险。
- 图片优化:使用短代码或 CDN 替代本地大图。如果必须本地存储,使用
ShortPixel或Imagify自动压缩图片。
-
数据库优化
- 定期清理
wp_posts中的修订版本(Revisions)。 - 使用
WP-Optimize插件定期清理垃圾数据和碎片。 - 如果可能,将 wp-options 表数据缓存到 OPcache。
- 定期清理
五、 外部提速:CDN 是救命稻草
-
全站 CDN
- 接入阿里云 CDN 或腾讯云 CDN。
- 将所有静态资源(图片、CSS、JS)通过 CDN 分发。
- 源站隐藏:CDN 回源地址指向你的 1C2G 服务器 IP,但通过 CDN 域名访问网站。这样大部分流量被 CDN 拦截,只有动态请求(如登录、评论、API)才打到你的弱鸡服务器上。
-
HTTPS 终止
- 在 CDN 层处理 SSL/TLS 加密解密,减轻服务器 CPU 负担。
六、 监控与告警
-
安装基础监控
- 使用
htop实时观察内存和 CPU。 - 配置云厂商自带的云监控报警:当 CPU > 80% 持续 5 分钟,或内存使用率 > 90% 时,发送短信/邮件通知。
- 使用
-
日志轮转
- 确保 Nginx 和 PHP 的错误日志有
logrotate配置,防止日志文件撑爆磁盘空间。
- 确保 Nginx 和 PHP 的错误日志有
总结:一套可行的最小可行配置(MVP)
| 组件 | 推荐配置 | 理由 |
|---|---|---|
| OS | Ubuntu 20.04/22.04 LTS | 社区支持好,资源占用相对可控 |
| Web | Nginx 1.24+ | 高并发,低内存 |
| PHP | PHP 8.1/8.2 + FPM | 性能最好,内存优化佳 |
| DB | MariaDB 10.5+ | 兼容 MySQL,略轻于 MySQL 8 |
| Cache | Redis (仅对象缓存) + W3TC | 减少 DB 查询压力 |
| Theme | GeneratePress (免费版) | 极轻,无臃肿功能 |
| CDN | 阿里云/腾讯云免费额度 CDN | 分担 80% 静态流量 |
最后忠告:
1C2G 部署两个 WP,本质上是在玩火。它适合个人博客、内部测试环境、极低流量的展示型网站。如果你的网站有任何商业价值、预计日 PV 超过 1000,或者用户会进行大量交互(如论坛、电商),请毫不犹豫升级到 2C4G 或更高配置。
在云计算领域,“省小钱花大钱” 是最常见的陷阱。服务器宕机带来的时间成本和信任损失,远超每月几十块钱的升级费用。
云技术博客