首先通过dmesg | grep -i "memory\|error\|oom\|ecc"
命令过滤内核日志,提取与内存相关的错误信息(如“Out of Memory (OOM)”表示内存不足,“ECC error”表示纠错码错误,“Page fault”表示页面错误)。明确错误类型是后续排查的基础——例如,OOM错误需关注内存容量,ECC错误则直接指向硬件问题。
内存错误多由硬件故障引起,需优先排查:
memtest86+
工具(需制作启动U盘)进行全内存检测,该工具可识别单比特/双比特错误。yum update kernel
命令升级到最新稳定版内核,重启后选择新内核启动。根据错误类型调整内核参数,缓解内存压力:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 开机自动挂载
/etc/sysctl.conf
文件,添加以下参数(限制内存过度分配、调整swappiness):vm.overcommit_memory = 2 # 禁止过度分配(值为2时严格检查) vm.swappiness = 10 # 减少交换空间使用频率(0-100,值越小越倾向于使用物理内存)
应用更改:sudo sysctl -p
。top
或htop
命令(按M
键按内存排序),查看内存占用高的进程;若某进程持续增长且不释放,可能存在内存泄漏。valgrind --leak-check=full ./your_program
命令检测内存泄漏点,根据输出修复代码。若上述方法均无效,且系统频繁出现内存错误(尤其是多进程场景),需考虑增加物理内存(RAM)。选择与主板兼容的内存条(频率、容量、类型需一致),避免兼容性问题。