答案1
首先检查 dmesg 和系统日志中是否有任何内核面板或内存使用情况。看起来你有一个应用程序正在使用你所有的内存。试试这个脚本,它会将你的进程列表记录在一个文件中,你就会知道是什么导致了你的问题:
#!/bin/bash
mkdir /tmp/mem_log
while [ 1 ] ; do
date "+%Y-%m-%d %H:%M:%S"
ps aux
sleep 60
done
并像这样执行:
nohup ./mem_log.sh > /tmp/mem_log/mem_log.log &
下次服务器崩溃后,检查日志以查看哪个进程使用了所有内存。这是内存问题,但不是因为你没有足够的内存,而是一个有故障的进程导致了这种情况。
答案2
您可能需要安装普斯蒙并使其报告/终止行为不当的占用大量内存的进程。Psmon 会记录/通过电子邮件发送其响应的事件,这样您就可以轻松找出其中的反叛进程。