1核1G 跑 WordPress,说实话,这在几年前是“地狱难度”,但在现在的 PHP 7.4/8.0+ 和 MySQL 5.7/8.0 环境下,只要优化到位,完全能跑起来,甚至并发不高时体验还不错。
核心逻辑就一条:把内存吃紧的问题,通过“缓存”和“精简”来解决。 1G 内存对于操作系统 + Web 服务 + 数据库来说,非常捉襟见肘,一旦稍微有点流量或者后台操作,OOM(Out of Memory)报错立马就来。
以下是我实测过、在阿里云/腾讯云等主流厂商上验证过的具体优化方案,按优先级排序:
1. 基础环境选型(决定生死的关键)
- PHP 版本:必须用 PHP 7.4 或 8.0+。别碰 5.6 或 7.2,性能差距巨大。PHP 8.0 的 JIT 虽然对 WP 提升有限,但整体响应速度更快,内存占用更可控。
- Web 服务器:推荐 Nginx + PHP-FPM。Apache 太吃内存,1G 机器上跑 Apache 很容易崩。Nginx 处理静态资源能力强,配合 FPM 可以控制进程数。
- 数据库:首选 MySQL 5.7 或 MariaDB 10.3+。MySQL 8.0 默认配置较激进,1G 内存下容易爆,如果非要用 8.0,必须大幅调整
innodb_buffer_pool_size。
2. Nginx 配置优化
不要只用默认配置。重点调整 worker_processes 和 keepalive。
worker_processes auto; # 设为 1 即可,1核 CPU
events {
worker_connections 1024;
}
http {
keepalive_timeout 65;
# 开启 gzip 压缩,节省带宽,减少传输时间
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}
3. PHP-FPM 调优(重中之重)
这是 1G 内存最容易出问题的地方。默认配置通常会启动多个子进程,直接撑爆内存。
在 /etc/php-fpm.d/www.conf(路径视系统而定)中修改:
- pm = dynamic:动态管理进程。
- pm.max_children = 10:这里要极其保守。1G 内存,每个 PHP 进程大概占 30-50MB,留足给 OS 和 MySQL 的空间,最多开 10-15 个。
- pm.start_servers = 2:启动时只开 2 个。
- pm.min_spare_servers = 1:最小空闲 1 个。
- pm.max_spare_servers = 5:最大空闲 5 个。
- pm.process_idle_timeout = 10s:空闲 10 秒就杀掉,回收内存。
这样设置后,平时只有几个进程在跑,有请求时才临时拉起,用完即走,极大降低内存峰值。
4. MySQL/MariaDB 极致精简
1G 内存跑 MySQL,默认配置基本必死。你需要手动限制 InnoDB 缓冲池大小。
编辑 /etc/my.cnf 或 /etc/mysql/my.cnf:
[mysqld]
# 关键:限制 InnoDB 缓冲池,不要让它吃掉所有内存
innodb_buffer_pool_size = 128M
# 或者更小,100M 也可以,取决于你的数据库大小
# 关闭不必要的日志
general_log = 0
slow_query_log = 0 # 生产环境建议开启,但初期调试可关
# 连接数限制
max_connections = 50 # 默认可能 151,太高了没用,还占内存
# 其他优化
table_open_cache = 20
thread_cache_size = 8
query_cache_type = 0 # MySQL 8.0 已移除,5.7 及以下建议关闭或设小,因为锁竞争严重
query_cache_size = 0
重启 MySQL 服务生效。
5. WordPress 内部瘦身
代码层面的优化,能省一点是一点。
-
对象缓存(Object Cache):
- 强烈推荐安装 Redis 或 Memcached。1G 机器上,Redis 内存占用极低(几 MB),但能将数据库查询压力从 MySQL 转移出去,显著降低 PHP 执行时间和 MySQL 负载。
- 插件推荐:Redis Object Cache。
- 如果没有 Redis,至少用文件缓存(File Cache),但不如内存缓存效果好。
-
禁用 REST API 心跳(Heartbeat):
- WordPress 后台每分钟会向服务器发送一次 AJAX 请求,用于检测锁定等。这对 1G 机器是灾难。
- 在
functions.php添加以下代码限制其频率:// 限制后台 Heartbeat add_action( 'init', 'stop_heartbeat', 1 ); function stop_heartbeat() { wp_deregister_script('heartbeat'); wp_register_script('heartbeat', '', array(), '1.1' ); wp_enqueue_script( 'heartbeat' ); }或者使用插件如 “Disable Heartbeat Extension”。
-
图片优化:
- 启用 WebP 格式,使用插件如 ShortPixel 或 Imagify 自动转换。
- 延迟加载(Lazy Load):WP 5.5+ 已内置,确保开启。
-
主题与插件:
- 少即是多。插件总数控制在 10 个以内。
- 避免使用臃肿的多功能主题(如 Avada, Enfold)。选择轻量级主题,如 Astra、GeneratePress、Flavor 或 Kadence。
- 删除不用的插件和主题,它们虽不运行,但会增加扫描开销。
-
数据库清理:
- 定期清理垃圾评论、修订版本(Revisions)、过期 transient 数据。
- 插件推荐:WP-Optimize 或 Advanced Database Cleaner。
- 在
wp-config.php中添加:define('WP_POST_REVISIONS', 3); // 最多保留 3 个修订版 define('AUTOSAVE_INTERVAL', 120); // 自动保存间隔改为 120 秒
6. 前端静态化与 CDN
- CDN 提速:务必接入 CDN(阿里云 CDN、腾讯云 CDN 或 Cloudflare 免费版)。将 CSS、JS、图片等静态资源全部推到 CDN。这样你的 1G 服务器只需要处理 HTML 生成和 API 请求,负载下降 70% 以上。
- 页面缓存:
- 使用全页面缓存插件,如 WP Super Cache 或 W3 Total Cache。
- 设置为“专家模式”或“简单模式”,生成静态 HTML 文件。
- 这样大多数访问者看到的是静态 HTML,无需经过 PHP 解析和数据库查询,服务器压力骤减。
7. 监控与告警
- 安装一个轻量级监控工具,如 Prometheus Node Exporter + Grafana,或者直接用云厂商自带的云监控。
- 关注指标:Memory Usage、Swap Usage、Load Average。
- 如果 Swap 使用率持续高于 20%,说明物理内存不足,需要进一步精简或考虑升级。
总结 Checklist
- [ ] PHP 7.4+ / Nginx / MySQL 5.7
- [ ] Nginx 开启 Gzip
- [ ] PHP-FPM max_children <= 10
- [ ] MySQL innodb_buffer_pool_size = 128M
- [ ] 安装 Redis 对象缓存
- [ ] 启用 WP Super Cache 全页缓存
- [ ] 接入 CDN 提速静态资源
- [ ] 禁用后台 Heartbeat
- [ ] 精简插件和主题
最后提醒:
1核1G 适合个人博客、展示型网站、低流量企业官网。如果你的日 PV 超过 5000,或者有大量用户同时在线互动,建议直接升级到 2核2G 或以上。云服务器成本现在很低,1核1G 属于“极限压榨”场景,维护成本高,稳定性风险也高。如果预算允许,2核2G 是性价比更高的起点。
云技术博客