直接给结论:理论上可行,但生产环境极度不推荐,体验会非常糟糕。
在 1C/1G 的配置下跑两个 WordPress,属于“极限压榨”操作。如果只是为了学习、测试或者个人博客临时用一下,可以通过极致优化实现;如果是正经的业务站点,这配置连一个带缓存插件的 WP 都会卡得怀疑人生。
下面从技术角度拆解为什么难,以及如果你非要这么干,该怎么优化。
一、 核心瓶颈分析
WordPress 是典型的 LAMP/LNMP 架构应用(Linux + Nginx/Apache + MySQL/MariaDB + PHP),对内存和 I/O 极其敏感。
-
内存(RAM)是最大的拦路虎
- 操作系统开销:CentOS/Ubuntu 等系统本身启动后,空闲内存通常在 200MB-400MB 左右。你只剩 600MB-800MB 可用。
- MySQL 压力:这是吃内存大户。即使使用 MariaDB 或优化过的 MySQL,默认配置也可能占用 200MB+。如果两个 WP 共用一个数据库实例,并发稍高就会 OOM(Out of Memory)。
- PHP-FPM 进程:每个请求都会启动 PHP 进程。1G 内存根本不够支撑多个并发请求。一旦有人访问,PHP 进程飙升,内存瞬间爆满,服务器开始疯狂 Swap(交换分区),导致 CPU 100% 满载,网站假死。
- Web 服务器:Nginx 相对轻量,但如果开启过多 worker,也会消耗内存。
-
CPU(1核)的计算能力有限
- WordPress 每次页面加载都要执行大量 PHP 代码、查询数据库。单核 CPU 在处理并发请求时,排队现象严重。
- 如果有两个站点同时有访客,响应时间会指数级上升。
-
磁盘 I/O
- 云服务器通常使用的是云盘(SSD),IOPS 尚可。但在内存不足导致频繁 Swap 时,磁盘读写会成为新的瓶颈,进一步拖慢速度。
二、 如果非要部署,如何优化?(实操方案)
如果你坚持要在 1C/1G 上跑两个 WP,必须采取“极简主义”策略,放弃所有花哨功能。
1. 软件栈选择
- Web 服务器:必须用 Nginx,不要用 Apache。Nginx 更省内存,处理静态资源能力更强。
- 数据库:强烈建议 MariaDB 而非 MySQL,或者使用 Percona Server。两者都经过优化,内存占用更低。
- PHP:使用 PHP 7.4 或 8.0+,务必开启 OPcache。不要开 ZTS(线程安全),因为 Web 服务不需要。
2. 关键参数调优(以 MariaDB 为例)
编辑 /etc/my.cnf 或 /etc/mysql/mariadb.conf.d/50-server.cnf,加入以下保守配置:
[mysqld]
innodb_buffer_pool_size = 64M # 默认可能是 128M 或更高,这里压到最低
max_connections = 20 # 限制最大连接数,防止被撑爆
query_cache_type = 1 # 开启查询缓存(MariaDB 支持,MySQL 8.0 已移除)
query_cache_size = 16M # 分配少量内存给查询缓存
tmp_table_size = 16M
max_heap_table_size = 16M
3. PHP-FPM 优化
编辑 php-fpm.conf 或 www.conf:
- 将
pm模式改为ondemand,而不是dynamic。 - 设置极低的子进程数:
pm.max_children = 5 # 最多只允许 5 个 PHP 进程同时存在 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3注意:这意味着同一时刻最多只能处理 5 个请求,第 6 个请求需要等待前一个完成。
4. WordPress 自身瘦身
- 主题:使用最轻量的主题,如 GeneratePress、Astra 或默认的 Twenty Twenty-One/Three。禁用所有不必要的模块。
- 插件:
- 必须装:一个轻量级缓存插件,如 W3 Total Cache 或 WP Super Cache,生成静态 HTML 文件,减少 PHP 执行。
- 绝对不要装:SEO 插件(除非必要)、备份插件(本地备份即可)、图片优化插件(手动压缩图片上传)、页脚显示插件等。
- 禁用 REST API 和 XML-RPC:如果不需要手机端同步或第三方登录,直接在
functions.php中禁用,减少后台开销。 - 关闭 Heartbeat:禁用 WordPress 后台的心跳检测,节省 AJAX 请求。
5. 启用 Swap(虚拟内存)
虽然 Swap 速度慢,但在内存不足时能防止系统崩溃。
# 创建 1GB swap 文件
dd if=/dev/zero of=/swapfile bs=1M count=1024
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# 写入 fstab 使其开机生效
echo '/swapfile none swap sw 0 0' >> /etc/fstab
注意:调整 vm.swappiness 为 10~20,避免过度使用 Swap。
6. 分离数据库实例?不建议
在 1C/1G 上,强烈建议两个 WP 共用同一个数据库实例,而不是分别安装两套 MySQL。分别安装会导致两个 MySQL 进程各自占内存,必崩无疑。通过创建不同的数据库用户和数据库名来隔离数据。
三、 更现实的替代方案
作为知乎大神,我必须告诉你,这种配置做生产环境是反人性的。以下是更合理的建议:
-
升级配置:
- 最低要求:2C/2G 或 2C/4G。这个配置可以轻松运行 2-3 个轻量级 WP,且性能良好。
- 性价比之选:国内云厂商(阿里云、腾讯云、华为云等)经常有新用户优惠,2C/2G 的 ECS/CVM 价格并不贵,一年几百元就能搞定。
-
使用容器化部署(Docker):
- 如果必须用 1C/1G,可以用 Docker 部署两个 WP,但同样面临资源竞争问题。不过 Docker 可以更精细地限制每个容器的内存上限(如
--memory=512m),防止一个 WP 把另一个饿死。但这依然无法解决单核 CPU 的性能瓶颈。
- 如果必须用 1C/1G,可以用 Docker 部署两个 WP,但同样面临资源竞争问题。不过 Docker 可以更精细地限制每个容器的内存上限(如
-
考虑其他 CMS 或静态化:
- 如果内容量不大,可以考虑 Hugo 或 Hexo 生成静态站点,部署在 Nginx 上,几乎不占内存,1C/1G 跑几十个静态站都没问题。
- 或者使用轻量级框架如 Flarum(论坛)或 Typecho(博客),它们比 WP 更省资源。
-
利用 CDN 和对象存储:
- 将所有图片、CSS、JS 等资源上传到 OSS/COS,并通过 CDN 提速。这样服务器只需处理动态请求,大幅减轻负载。
总结
在 1C/1G 服务器上部署两个 WordPress,技术上可以通过极端优化实现“能用”,但实际体验会是“卡顿、延迟高、易崩溃”。
我的建议是:
- 如果是学习目的:可以试试,重点在于练习 Linux 调优、Nginx 配置、MySQL 优化和 PHP-FPM 管理。
- 如果是业务用途:请立即升级服务器配置到 2C/2G 或以上。时间就是金钱,用户的耐心是有限的,别让低配服务器毁了你的项目口碑。
CLOUD云枢