🚀 DevOps
2026年6月14日2 分钟阅读2181在 2G 内存的服务器上跑 Docker 全栈应用
2G 内存的 VPS 上跑四个容器的生存指南:本地构建、内存限制、swap 配置与数据库调优。
这台服务器是 2C2G 的入门款 VPS,要在上面同时跑 Next.js 前台、管理后台、Node API 和 PostgreSQL。本文记录怎么让这套东西在 2G 内存里稳定活着。
第一课:永远不要在生产机上 build
next build 峰值内存能到 1.5G 以上,服务器上直接构建必被 OOM killer 收割。正确姿势是本地(或 CI)构建镜像,推到镜像仓库,服务器只负责 pull + up:
docker buildx build --platform linux/amd64 -t registry.example.com/blog-client:latest --push . ssh vps "docker compose pull && docker compose up -d"
第二课:给 Docker 限内存
不加限制时,单个容器失控会拖死整机。给每个服务都加上限制:
services: server: mem_limit: 512m memswap_limit: 512m
第三课:swap 是保命符
2G 内存的机器建议配 2G swap。不是为了让它常态运行,而是给内存尖峰一个缓冲:
fallocate -l 2G /swapfile && chmod 600 /swapfile mkswap /swapfile && swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab
同时把 vm.swappiness 调到 10,尽量还是用内存。
第四课:PostgreSQL 也要调
默认配置对 2G 小机偏奢侈,shared_buffers 给 256M 足够,max_connections 压到 50。
结果
调完之后整套服务稳定运行,free -h 常态在 1.2G 左右,已经稳稳跑了五个月。小机器有小机器的活法,关键是别让它做不属于它的事。
分享这篇文章
评论