2核2G小内存服务器总是卡死?一招教你用Swap分区彻底解决

2核2G小内存服务器总是卡死?一招教你用Swap分区彻底解决

_

近在云服务器上部署了几个个人项目,但发现这台入门级的 2核2G(2h2g)服务器经常会出现运行一段时间后莫名其妙卡死、SSH连接断开,甚至后台提示磁盘 I/O 读写异常的情况 😫。

经过一番排查,终于找到了问题的根源,并用一个非常简单的方法彻底解决了。今天就把这次的排坑经验分享出来,希望能帮到同样在用小内存服务器跑服务的朋友们 🤝。

🔍 问题排查:为什么服务器会频繁卡死?

很多入门级云服务器的配置是 2核2G,实际可用物理内存往往只有 1.6G 左右。当我们运行 Docker 容器、数据库(如 MySQL)或者 Java 应用时,2G 内存很快就捉襟见肘了 📉。

通过在终端输入 free -h 命令查看内存使用情况,你会发现物理内存(Mem)几乎被吃满,而 Swap(虚拟内存)一栏显示的全是 0B

结论非常清晰 🎯: 当物理内存耗尽时,Linux 系统为了保护自身,会触发 OOM(内存溢出)机制强制杀死占用内存最高的进程,或者因为频繁读写硬盘导致 I/O 飙升,最终导致服务器直接“假死” 💀。

🛠️ 解决方案:给服务器加个“安全气囊”(Swap分区)

既然物理内存不够用,我们就给服务器划出一部分硬盘空间当作“备用内存”来用,这就是 Swap(交换分区) 💾。它就像一个“安全气囊” 🛡️,平时你可能感觉不到它的存在,但在内存告急的关键时刻,它能保证你的服务器不直接宕机。

以下是具体的操作步骤(适用于 Ubuntu / Debian / CentOS 等主流 Linux 系统 🐧):

1️⃣ 检查磁盘剩余空间
首先,我们需要确认硬盘里有足够的空间来创建 Swap 文件。执行命令:

bash

编辑

1df -h

查看挂载点为 /(根目录)的那一行,确保 Avail(可用空间)大于你想要设置的 Swap 大小(建议设置为 2G)。

2️⃣ 清理可能存在的旧 Swap 文件
如果你之前尝试过创建,可以先执行以下命令清理一下(如果提示文件不存在,直接忽略即可):

bash

编辑

1sudo swapoff /swapfile
2sudo rm -f /swapfile

3️⃣ 创建并启用 2G 的 Swap 文件
依次执行以下 4 条命令,完成 Swap 文件的创建、权限设置、格式化和启用:

bash

编辑

1# 创建一个 2G 大小的 swap 文件
2sudo fallocate -l 2G /swapfile
3
4# 设置文件权限,保证安全
5sudo chmod 600 /swapfile
6
7# 将该文件格式化为 swap 格式
8sudo mkswap /swapfile
9
10# 立即启用 swap 文件
11sudo swapon /swapfile

4️⃣ 设置开机自动挂载
为了防止服务器重启后 Swap 失效,我们需要把它写入系统配置文件:

bash

编辑

1echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

5️⃣ 优化 Swap 使用倾向(Swappiness)
Linux 默认的 Swap 使用倾向较高,为了避免系统过早地频繁使用硬盘 Swap 导致卡顿,建议将这个值设为 10(即内存真的快不够用时才动用 Swap):

bash

编辑

1# 临时生效
2sudo sysctl vm.swappiness=10
3# 永久生效(写入配置文件)
4echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

6️⃣ 验证是否成功
最后,再次执行 free -h 命令。只要看到输出结果中 Swap 这一行的 total 变成了 2.0Gi 左右,就说明你的“安全气囊”已经完美安装好了!✅

🚀 进阶优化:Docker 容器的内存限制

解决了 Swap 问题后,服务器基本不会再出现直接卡死的情况。但为了让 2G 小内存服务器跑得更丝滑,我还建议对 Docker 容器做一些限制 🐳:

  1. 限制容器的内存上限:在启动 Docker 时加上 -m 1024m --memory-swap=1024m 参数,防止单个应用无节制地吃光所有内存。

  2. 限制 Docker 日志大小:加上 --log-opt max-size=10m --log-opt max-file=3 参数,避免日志文件无限增长打满磁盘 I/O。

📌 总结

对于入门级的 2核2G 服务器来说,启用 Swap 是保障服务稳定运行的“必修课” 📝。虽然硬盘 Swap 的速度不如物理内存,但它能有效避免因内存溢出导致的服务器崩溃。希望这篇记录能帮你解决 Linux 服务器卡顿的烦恼!✨

别再重复加密密码了!Spring Security 中正确验证旧密码的方式 2026-05-15
Windows 技巧:文件夹提示“已在另一程序中打开”无法删除?一招精准解决! 2026-05-22

评论区