对于日均访问量 ≤ 100(即约 4–5 次/小时,峰值极低)的个人技术博客,使用 1核2GB 内存 + 常见 Linux(如 Ubuntu/CentOS) 运行 Nginx + MySQL + PHP(如 PHP-FPM) 是完全可以稳定运行的,但需合理配置和优化。以下是详细分析与建议:
| ✅ 为什么可行? | 组件 | 资源占用(典型轻量场景) | 说明 |
|---|---|---|---|
| Nginx | ≈ 5–15 MB 内存,CPU 几乎不占 | 静态文件处理高效,100 UV/天几乎无压力 | |
| PHP-FPM | pm=static + pm.max_children=3–5 → 占用 ~30–80 MB 内存 |
博客多为静态页面或缓存后极少执行 PHP | |
| MySQL | mysqld 启动后常驻 ≈ 80–150 MB(启用 InnoDB 缓冲池调小后) |
可禁用不用组件(如 Performance Schema)、调小 innodb_buffer_pool_size=32M–64M |
|
| 系统+其他 | ≈ 200–400 MB(含 SSH、日志、内核等) | 2GB 总内存绰绰有余 |
→ 合计常驻内存占用通常在 500–900 MB 范围,远低于 2GB 上限,留有充足余量应对突发(如爬虫、后台更新、备份等)。
⚠️ 关键前提与优化建议(否则可能不稳定)
-
禁用非必要服务
- 关闭
apache2、postfix、bluetooth、snapd等默认安装但博客无需的服务。 - 使用
systemctl list-unit-files --state=enabled检查并禁用冗余项。
- 关闭
-
MySQL 轻量化配置(
/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf):[mysqld] skip-log-bin disable_log_bin innodb_buffer_pool_size = 64M # ⚠️ 默认可能是 128M+,必须调小 key_buffer_size = 16M max_connections = 32 table_open_cache = 64 sort_buffer_size = 256K read_buffer_size = 256K performance_schema = OFF # 关键!默认 ON 会吃 100MB+ 内存 -
PHP-FPM 合理进程管理(
/etc/php/*/fpm/pool.d/www.conf):pm = static pm.max_children = 4 # 避免 dynamic/spawn 导致内存抖动 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 php_admin_value[memory_limit] = 128M # 博客够用,避免设 512M 浪费 -
启用 OPcache(PHP 核心提速):
opcache.enable=1 opcache.memory_consumption=64 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 -
静态化/缓存优先(强烈推荐):
- 使用 Hugo/Jekyll 生成静态站(完全无需 PHP/MySQL)→ 最省资源;
- 若用 WordPress:必装 WP Super Cache / WP Rocket(生成静态 HTML),配合 Nginx 的
try_files直接返回缓存文件,绕过 PHP; - 数据库查询极少触发,MySQL 实际负载趋近于零。
-
监控与告警(防隐性问题)
- 安装
htop、mysqladmin status、nginx -t && nginx -s reload养成习惯; - 设置
logrotate防止日志撑爆磁盘(尤其/var/log/mysql/,/var/log/nginx/); - 可选:用
netdata(轻量级)或bpytop实时看内存/CPU。
- 安装
❌ 什么情况下会出问题?
- ❌ 未调优 MySQL(尤其
performance_schema=ON+ 默认 buffer_pool)→ 启动即占 1.2GB+ 内存,OOM Killer 杀进程; - ❌ PHP-FPM
pm=dynamic+max_children=50→ 内存爆炸; - ❌ 安装了全量 LAMP 套件(如 phpMyAdmin + Apache + MariaDB 备份工具等)且未清理;
- ❌ 博客被恶意扫描/CC 攻击(100 UV/天 ≠ 100 请求/天;一个页面含 20+ 资源则实际请求超 2000+/天,但依然安全);
- ❌ 磁盘空间不足(10GB 系统盘装完系统+日志+升级包易满,建议至少 20GB)。
✅ 结论:可以稳定运行 ✅
只要做到:
- ✅ 禁用冗余服务
- ✅ MySQL 和 PHP-FPM 显式调小内存参数
- ✅ 启用 OPcache 和页面级静态缓存
- ✅ 定期清理日志/临时文件
1核2G 就是非常充裕的选择——甚至可同时跑一个轻量 Node.js 小工具(如 RSS 生成器)或定时备份脚本。
💡 进阶建议(免费增稳):
- 用
systemd-coredump或oom_score_adj降低 MySQL 优先级,保 Nginx 不被 OOM 杀; - 将 MySQL 数据目录移到内存盘(tmpfs)仅用于开发测试,生产不推荐;
- 用
fail2ban拦截暴力 SSH/WordPress 登录尝试(安全又省资源)。
如需,我可以为你提供一份开箱即用的 1核2G 优化配置脚本(bash) 或针对 WordPress/Hugo 的最小化部署指南 👍
是否需要? 😊
CLOUD云计算