先给结论:在 1核1G 这种“极限低配”环境下,强烈建议首选 Ubuntu Server (LTS版本),或者更极致的 Debian。 CentOS Stream 在这种配置下体验会非常痛苦,甚至可能因为资源耗尽导致服务频繁崩溃。
这不是玄学,而是由两者的底层设计哲学、包管理习惯以及默认启动项决定的。下面从几个硬核维度给你拆解为什么这么选,以及如果你非要折腾该怎么优化。
1. 内存占用的“原生差异”
这是最致命的痛点。1GB 内存对于现代 Linux 发行版来说,连跑个 Docker 都捉襟见肘,必须精打细算。
- Ubuntu Server:
- 默认安装后(无 GUI),空闲内存占用通常在 200MB – 350MB 左右。
- Ubuntu 的 systemd 服务虽然也在增长,但相比 RHEL 系还是收敛得多。
snapd是个大坑,默认开启且占用大量内存和磁盘 IO。装完系统第一件事:禁用并卸载 snapd。
- CentOS Stream / Rocky / Alma:
- 基于 RHEL (Red Hat Enterprise Linux) 代码库。RHEL 的设计哲学是“企业级稳定”,这意味着它默认加载的服务更多,后台守护进程更重。
- 同样最小化安装,空闲内存占用往往在 400MB – 600MB 甚至更高。
- SELinux 默认处于 Enforcing 模式,虽然安全,但在低配机器上调试权限问题会消耗额外的 CPU 周期和内存。
数据对比参考:
在同等软件栈(Nginx + MySQL/PostgreSQL)下,CentOS 的基线内存水位线比 Ubuntu 高出 15%-25%。在 1G 内存里,这 100-200MB 的差异就是“能跑”和“OOM Kill(内存溢出杀死进程)”的区别。
2. 软件源与依赖管理
- Ubuntu (APT):
- 社区极其庞大,第三方软件(如 Node.js, Python, Java 环境)通常提供官方的
.deb包或 PPA,安装路径清晰,依赖解析速度快。 - 对于开发者而言,Ubuntu 的环境更接近大多数教程和开源项目的推荐环境。
- 社区极其庞大,第三方软件(如 Node.js, Python, Java 环境)通常提供官方的
- CentOS Stream (DNF/YUM):
- DNF 的性能本身不错,但 RHEL 系的仓库策略保守。很多新版本的软件可能需要你手动编译或添加第三方 Repo(如 EPEL)。
- CentOS Stream 作为 RHEL 的上游滚动更新分支,其稳定性不如 CentOS 7/8 那样“死板”,但也意味着你可能需要处理更多的兼容性微调。在低配服务器上,维护成本是一个隐形负担。
3. 实际场景推演
假设你的服务器要跑一个典型的 Web 应用(比如 Nginx + PHP-FPM + MySQL):
| 组件 | Ubuntu 1核1G 表现 | CentOS Stream 1核1G 表现 |
|---|---|---|
| 开机启动 | 较快,服务少 | 较慢,后台服务多 |
| MySQL 启动 | 容易 OOM,需大幅调优 my.cnf | 更容易 OOM,需更大幅度调优 |
| Docker 运行 | 勉强可跑轻量容器,需 swap | 极易卡顿,swap 压力巨大 |
| 日常运维 | apt update && apt upgrade 流畅 |
dnf update 相对耗时,CPU 占用高 |
关键点:在 1G 内存下,你几乎必然需要开启 Swap(交换空间)。Swap 的本质是用硬盘当内存,而云服务器通常是 SSD/NVMe,速度尚可,但频繁换页会导致 I/O 等待飙升,CPU 利用率看似不高,但响应极慢。
Ubuntu 的优势在于:它的默认配置对 Swap 的容忍度稍好,且社区有海量的针对“低配 VPS 优化”的现成脚本和教程(比如一键优化内核参数、禁用不必要的服务等)。
4. 如果你必须坚持用 CentOS Stream?
我知道有些人因为公司规范、个人偏好或特定软件兼容性(比如某些商业软件只支持 RHEL 系)非要用 CentOS Stream。那么你必须做以下“阉割”操作,否则别怪服务器卡:
- 最小化安装(Minimal Install):绝对不要选带 GUI 的,连基础开发工具都不要选。
- 关闭 SELinux:改为 Permissive 或 Disabled。虽然不安全,但在内网小项目里,性能提升显著。
- 精简 systemd 服务:使用
systemctl disable <service>禁用所有非必要的服务(如 firewalld 换成 iptables 或直接关,auditd 等)。 - 调整 swappiness:将
/etc/sysctl.conf中的vm.swappiness设置为 10 或更低,减少主动换页。 - 数据库优化:MySQL/MariaDB 的
innodb_buffer_pool_size必须设得很小(比如 64M-128M),否则直接撑爆内存。
5. 终极建议:除了 Ubuntu,还可以考虑什么?
如果你的目标是“极致节省资源”,除了 Ubuntu,我强烈推荐以下两个选择:
-
Debian 11/12 (Stable):
- 比 Ubuntu 更轻量,没有 snapd 的包袱。
- 社区同样活跃,兼容绝大多数 Ubuntu 的软件包。
- 空闲内存可以压到 150MB 以下。
- 缺点:部分新软件的支持滞后于 Ubuntu,需要自己搞定一些驱动或新特性。
-
Alpine Linux:
- 基于 musl libc 和 busybox,镜像只有几 MB。
- 空闲内存 < 50MB。
- 适合:纯 Docker 宿主、极简 API 服务。
- 不适合:需要复杂编译环境、传统 LAMP/LNMP 堆栈的用户,兼容性较差。
总结
- 追求省心、教程多、生态好 -> Ubuntu Server LTS(记得关掉 snap)。
- 追求极致轻量、懂 Linux 原理 -> Debian Stable。
- 为了公司合规、熟悉 RHEL 体系 -> CentOS Stream(但请做好深度优化的心理准备,1G 内存真的很难受)。
最后提醒:无论选哪个,1核1G 的配置上限很低。如果业务量稍有增长,第一反应不应该是“优化系统”,而是“加钱升级配置”。云服务器的成本现在很低,把时间花在调试低配系统的瓶颈上,不如直接升到 2核2G 来得高效。
云技术博客