1G 内存(1GB RAM)+ 1 核 CPU(1H)的服务器,跑 WordPress 勉强够用,但属于“极限生存”状态。
能不能跑起来,取决于你的具体使用场景、优化程度以及预期的并发量。如果只是为了个人博客记录、静态展示或极低频访问,它是可以的;但如果是商业站点、需要频繁更新插件/主题,或者预计有少量并发流量,这个配置会非常吃力。
以下是从技术实现和运维角度的详细分析:
1. 资源瓶颈在哪里?
WordPress 是一个基于 PHP + MySQL/MariaDB 的动态 CMS,它的资源消耗是双重的:
- PHP-FPM:处理动态请求。每个并发请求都会占用独立的 PHP 进程内存。
- 数据库:MySQL 默认配置比较吃内存。在 1GB 环境下,如果分配不当,数据库很容易因为内存不足触发 OOM Killer(操作系统强制杀死进程),导致网站瞬间挂掉。
现状推演:
- 空闲状态:系统内核 + Web 服务(Nginx/Apache)+ 数据库常驻内存,大约会吃掉 400MB-600MB。剩余给 PHP 进程的空间非常有限(可能只剩 200MB-400MB)。
- 并发压力:如果有 2-3 个用户同时访问,或者一个用户刷新页面,PHP 进程数增加,内存瞬间爆满,服务器开始 Swap(交换分区读写),响应速度会从毫秒级跌落到秒级甚至超时。
2. 必须做的“瘦身”优化
如果你决定用 1G1H 跑 WP,必须严格执行以下优化,否则无法稳定运行:
A. 数据库层面(最关键)
不要使用默认的 my.cnf 配置。你需要手动限制 MySQL 的最大内存占用。
- 调整参数:将
innodb_buffer_pool_size设置为物理内存的 25%-30%(约 256MB-300MB)。 - 关闭不必要功能:如查询缓存(Query Cache),在 MySQL 5.7+ 中已废弃,旧版本建议关闭以节省内存。
- 推荐方案:直接使用轻量级的 SQLite 替代 MySQL(通过 WP-SQLite-Integration 插件),对于低流量博客,SQLite 的文件锁机制配合 1G 内存非常高效,且省去了独立数据库服务的开销。
B. Web 服务与 PHP 调优
- Web 服务器:首选 Nginx,配合 PHP-FPM。Apache 的多线程模型在低配服务器上开销较大。
- PHP-FPM 设置:
- 将
pm模式设为static(固定数量)或dynamic但极度限制max_children。 - 例如:
pm.max_children = 3或4。这意味着同一时间最多只能处理 3-4 个请求,多出来的直接排队或拒绝。
- 将
- 开启缓存:这是生死线。必须安装对象缓存插件(如 Redis Object Cache,如果内存不够则用简单的 W3 Total Cache 或 WP Super Cache),将动态页面转为静态 HTML 输出,大幅减少 PHP 执行频率。
C. 系统与内核优化
- Swap 分区:务必划分至少 1GB-2GB 的 Swap 虚拟内存。虽然磁盘 IO 慢,但在物理内存耗尽时,它能防止服务直接崩溃(OOM Kill),让服务器“拖”着跑而不是直接死机。
- 精简环境:不要安装宝塔面板等重型管理工具(它们本身就要占几百 MB 内存)。建议使用命令行(SSH)直接管理,或者使用 Docker 容器化部署,只保留核心组件。
3. 适用场景判断
| 场景 | 结论 | 原因 |
|---|---|---|
| 纯个人日志/静态展示 | ✅ 可用 | 日均 PV < 100,几乎无并发,配合强力缓存可流畅运行。 |
| 企业官网/展示页 | ⚠️ 风险高 | 偶尔的营销活动或爬虫抓取可能导致内存溢出,需人工值守监控。 |
| 电商/论坛/高互动 | ❌ 不可用 | 数据库查询复杂,并发稍高即卡死,用户体验极差。 |
| 自动化任务/后台管理 | ❌ 不可用 | 安装插件、更新核心代码、导入数据等操作极易撑爆内存。 |
4. 国内云厂商的现实考量
在国内主流云厂商(阿里云、腾讯云、华为云等)购买 1G1H 实例时,通常属于“入门级”或“学生机”范畴。
- 网络带宽:注意,很多低价套餐赠送的是按流量计费或共享带宽(如 1Mbps-3Mbps)。如果 WordPress 加载了较多图片,1Mbps 的带宽会导致首屏加载缓慢,此时即便服务器内存够,用户也会觉得“卡”。
- 快照与备份:1G 内存下,进行全量备份可能会短暂占用大量内存,建议安排在业务低谷期,并依赖云厂商的自动快照功能而非本地脚本。
总结建议
1G1H 跑 WordPress 是“能跑,但不舒服”。
- 如果你的预算确实只有这么多:请立刻启用对象缓存(Redis 或文件缓存),尽量使用SQLite代替 MySQL,并将 PHP-FPM 的子进程数限制在 3 以内。做好随时手动重启服务的心理准备。
- 如果追求稳定性:强烈建议升级到 2G 内存(2C2G)。2G 内存可以让 MySQL 从容分配 512MB+ 缓冲池,PHP 进程数也能开到 8-10 个,体验会有质的飞跃,成本增加非常有限。
在 IT 运维中,“够用”的定义不仅仅是“能启动”,而是“在预期负载下不崩盘”。对于生产环境,1G 内存通常被视为一种临时方案或测试方案。
CLOUD云枢