服务器OOM(Out Of Memory)
如果你出现(SSH 连不上 + 网站也挂了 + 过几分钟恢复),在小内存服务器上跑 next build 时非常常见,基本就是 服务器被 OOM(Out Of Memory)卡死/杀进程 了。
下面教你几种方法确认是不是“崩溃”以及从哪里看日志:
1. 看系统是否因为内存不足杀了进程(最重要)
1 | # 查看内核日志里是否有 OOM Kill |
如果你看到类似:
1 | [Mon Sep 9 12:34:56 2025] Out of memory: Killed process 12345 (node) total-vm:... |
就说明是 node(Next.js 构建进程)被 OOM 杀掉,期间系统可能卡死,导致你无法 SSH 和访问网站。
这就是 OOM Killer(内存不足杀进程) 的记录。
也就是说你的服务器没有真正“重启”,而是 内存用光 → 系统进入 OOM → 把正在吃内存的进程杀掉(node、甚至 networkmanager 都被杀)。
在这个过程中,服务器会卡死几分钟,SSH 和网站都连不上,所以你看到“崩溃”的现象。
2. 查看系统日志
不同系统日志位置略有差异:
1 | # 如果用 systemd(Ubuntu 20+/22+ 默认) |
重点留意里面是否有:
Out of memoryoom-killerkernel: Killed process ...- 服务器 CPU/内存 100% 导致 sshd/nginx 等服务暂时停顿
3. 看是否是机器直接重启了
如果怀疑整台服务器重启过,可以查开机时间:
1 | uptime -s # 上次开机时间 |
如果时间点跟你掉线的时间一致,就是重启了。
如果没重启,但掉线,那就是 OOM 卡死,过一会内核恢复。
4. 查看服务级别的日志
比如你跑的网站用 pm2 / docker / systemd 托管:
Docker:
1
2docker ps -a
docker logs <container_id>PM2:
1
pm2 logs
systemd service:
1
journalctl -u your-service-name --since "10 minutes ago"
✅ 总结:
- 先用
dmesg -T | grep -i -E "killed process|oom"确认是不是内存不足。 - 再用
journalctl对照具体时间看是否有 OOM Kill 或重启记录。 - 如果确认是 OOM,以后就需要 加 swap / 增内存 / 降低构建时内存占用
如何添加Swap?请参考👉这篇文章
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 sharpmind.tech!


