个人博客用1核1G服务器够不够?按访问量分情况说明
个人博客用1核1G够不够,答案取决于博客怎么搭。
纯静态页面、访客不多时,1核1G完全能跑;
用WordPress这类需要PHP和MySQL的动态博客,空闲时也能运行,但内存余量很小,流量突增或装插件较多时容易卡顿甚至进程被系统杀掉。
判断标准不是配置数字本身,而是同时运行的进程数量、页面是否缓存、日均访问量和数据库大小。
先分清博客属于哪一类
不同搭建方式对资源的占用差别很大:
- 静态博客(Hexo、Hugo、Astro 生成后由 Nginx 托管):只占几十MB内存,1核1G绰绰有余,瓶颈通常在带宽而不是CPU和内存。
- 轻量动态博客(Typecho、Halo 等搭配SQLite或小体积数据库):1核1G可用,但需要控制插件和并发。
- WordPress 加 MySQL:1核1G属于下限配置。系统、Nginx、PHP-FPM、MySQL 同时运行后空闲内存可能只剩一两百MB。
- 带图床、评论、统计、搜索的博客:内存和CPU开销都会上升,1核1G更容易吃紧。
如果博客刚起步、文章不多、日均访问量在几十到几百次,1核1G可以先跑;
如果已经有稳定流量,或者要装大量插件、开启站内搜索,直接选2G内存更省心。
1核1G上跑动态博客要注意什么
内存是最先碰到的上限
Linux 会把空闲内存用于缓存,看起来“内存快满了”不一定是故障。
真正要关注的是可用内存和 Swap 使用量。
登录服务器后执行:
free -h
top -o %MEM
free -h 里看 available 这一列,比 free 更有参考价值。
如果 available 长期低于 100MB,且 Swap 持续被大量使用,说明内存偏紧,页面响应会变慢。
加一块 Swap 作为缓冲
1核1G建议配置 1G 到 2G 的 Swap,避免 MySQL 或 PHP 进程在内存峰值时被 OOM Killer 直接杀掉。
以 Ubuntu/Debian 为例:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h
最后一条命令能看到 Swap 总量增加即生效。
Swap 只是缓冲,不能替代物理内存,频繁换页说明该升级配置了。
压缩数据库和Web服务的内存占用
MySQL 默认配置对1G内存偏高,可以在 /etc/mysql/mysql.conf.d/mysqld.cnf 或对应配置文件中调低缓冲池,例如把 innodb_buffer_pool_size 设为 128M 左右,修改后重启 MySQL 并用 systemctl status mysql 确认服务正常。
Nginx 开启 gzip 和静态缓存,PHP-FPM 的 pm.max_children 不要设太大,1核1G通常 5 到 10 个进程就够用。
上线前做一次实际压力检查
配置完成后不要只看“能打开首页”,要验证真实场景:
- 用浏览器打开文章页、分类页和搜索页,确认没有 502 或 504 错误。
- 执行
dmesg | grep -i oom检查是否出现过进程被系统杀掉。 - 用
uptime看 1、5、15 分钟负载,持续高于 1 说明单核已经跑满。 - 在宝塔面板的“监控”或系统
sar中观察内存和CPU曲线,重点看访问高峰时段。
如果上述检查都正常,1核1G可以继续用;
如果负载长期偏高、页面打开超过两三秒,优先加内存而不是只加CPU。
常见误区
- 只看商家标注的“1核1G”,忽略带宽和磁盘IO。博客打开慢很多时候是带宽不足或磁盘读写慢,不一定是内存不够。
- 认为内存占用高就必须重启。Linux 缓存机制会让内存看起来被占满,先看 available 和 Swap 再判断。
- 不配置备份就上线。小配置服务器一旦磁盘写满或数据库损坏,恢复成本更高,建议至少保留每日数据库和站点文件备份。
什么时候该升级
出现以下情况时,1核1G已经不适合继续硬撑:日均独立访客稳定超过几百、后台同时运行多个插件、数据库文件持续增长、开启图片处理和站内搜索、经常收到内存不足告警。
此时升级到2G内存通常比换更高主频的CPU更有效。
反过来,如果博客以静态页面为主、更新频率不高、访客有限,1核1G不仅够用,还能控制成本。
先按本文方法观察一两周的真实负载,再决定是否升配,比一开始就买高配更稳妥。