当系统出现oom问题时,我们一般的定位思路是怎样的?
系统OOM常见的原因有:
1、用户态内存需求过多,资源不足;
2、大页配置不正确;
3、水位线值异常;
4、slab内存过多;
5、rcu异常;
OOM问题定位步骤如下:
1、查看/proc/meminfo,查看用户态内存和内核态内存分别占用多少内存;通过top命令查看占用内存较多的前10个进程;
1、用户态内存使用过多;
2、top 10的进程存在非虚拟机进程,通常情况下,使用内存最多的是虚拟机进程。如果是费虚拟机进程出现在了前top10里,那么有可能是这个进程有内存泄露的问题;
3、如果top10进程都是虚拟机进程,确认虚拟机的规格是不是超过上限了;
2、查看大页配置是否正确,确认是否大量大页没有使用。如果大页还有剩余,虚拟机都是使用的小页,那么有可能是大页配置的不正确;
3、查看linux系统水位线配置是否正常,水位线,一般配置在文件/proc/sys/vm/min_free_kbytes,水位线控制有3个值,min,low,high,
当可用内存低
当遇到系统oom问题时,定位思路包括检查用户态内存、内核态内存、大页配置、水位线设置、异常情况等。查看内存占用高的进程,分析是否存在内存泄露,检查虚拟机规格和大页配置是否合理,确认系统水位线是否异常。此外,关注内核及模块内存分配,排查异常和死循环导致的内存无法释放。通过对调用栈的分析,找到问题根源,如硬件问题引起的死循环,最终实现内存的有效释放。
最低0.47元/天 解锁文章
722

被折叠的 条评论
为什么被折叠?



