如何阅读Linux OOM Killer日志? (linux oom killer 日志)

随着计算机系统的不断发展和应用,我们日益发现强大的操作系统的不可或缺性。在这其中,Linux作为一个十分稳定和开源的操作系统应用越来越广泛,但由于其特有的进程管理模式,会出现进程CPU过载或内存泄露的问题,造成系统的崩溃。为了解决这些问题,Linux提供了”OOM Killer”功能,本文将向大家介绍如何通过阅读Linux OOM Killer日志进行问题排查。

一、什么是Linux OOM Killer

OOM Killer的全称为Out of Memory Killer,翻译过来即“内存不足杀手” 。它的作用是在内存消耗过多时,强制杀掉一些进程,以释放部分内存。当系统出现内存泄漏等问题时,OOM Killer将根据一个提交内存的信息链表来管理进程的使用内存,如果内存超过了软限制(Soft Limit),系统会采取二次的缩减资源措施,如果再继续耗费,则会触发硬限制(Hard Limit),此时就会出现OOM Killer的行为。

二、为什么需要Linux OOM Killer

在理想状态下,一个进程在使用内存时,可能存在溢出的状态,这时内核会将进程杀死,让进程的内存资源被释放,以便让其它进程占用。需要OOM Killer的主要原因是,在内存消耗控制不当的情况下,系统会在占用内存的程序被送往硬盘交换区之前,耗尽所有其它支配权的内存。随后, 内核中的out_of_memory_killer进程将被调用来监控内存的使用情况。当内存用尽时,系统会出现“内存不足”的提示,此时系统会被迫通过强制关闭进程,以释放一些内存资源。由于这种情况下操作文件系统的效率上限将被降低, 因此可快速宣告系统无法继续工作。

三、如何阅读Linux OOM Killer日志

在Linux系统下,进程资源管理的问题是一个长期的演化过程。对于管理员而言,了解被杀掉的进程以及出现问题的根源至关重要。因此,我们需要查看是哪个进程的内存使用量超了限制并触发的OOM Killer。操作系统会将OOM Killer的日志记录在/var/log/messages中,我们可以通过以下几个步骤来查看具体日志信息。

之一步:打开/var/log/message文件,查找关键字‘oom-killer’。

打开终端,输入命令:sudo vi /var/log/messages

输入/oom-killer,查找这个字符串出现的地方。

第二步:查找OOM killer进程正在杀掉的进程号

在/var/log/message文件里搜索关键字’pid’,找到进程号,就可以知道是哪个进程被OOM killer所杀掉。

第三步:进一步了解哪个进程出现了OOM killer问题

首先查看进程号对应的用户名,输入命令:ps -ef | grep 被杀掉的进程号

接着再次查看进程的详细信息,例如,CPU使用率,内存使用率,输入命令:top -p 被杀掉的进程号

当我们查看这些信息时,可能会出现一些看不懂或者不知道具体含义的变量。例如,内存使用情况、虚拟内存使用情况、RSS、Swap、VIRT等。如果想要更加深入了解这些变量的含义,可以查找Linux的相关教程或手册资源来进一步释疑,从而更好理解内存资源的使用状况。

结语:

通过上述方法,我们可以判断出系统资源的使用情况,查看哪些进程常常会出错以及哪些进程一直保持性能,从而更好的了解Linux OOM Killer的日志。如果日志中包含的关键信息还无法解决你遇到的问题,那么我们可以通过更多的调试、提示或升级的方式解决问题。没有哪种方法是完美的,能够适用于所有情况。但是,学会如何查看Linux OOM Killer的日志将会有助于我们更好的管理Linux系统。

相关问题拓展阅读:

linux出现out of memory是什么问题

就是物理内存的陪租伍剩余大芦或小不足,Linux的一个自我保护措施就是当物理内存不足时,把接下来将要启动的程序kill掉,然后提示out of memory,从而防止物理内存耗尽而系统崩溃。所以当物理内存不足时,一些程序就启动不了(直接被kill掉了),解决办法是设置合适的swap内存交换空间(Linux的swap内存交换空间就相当于Windows系统的“虚拟内存”的设置),或者型码将不需要运行的进程用kill命令杀死从而释放内存空间,推荐还是设置swap吧。

有两种方法可以解决这个问题

1、如果可能,请升级到64位系统。

这是更好的解决办法,因为所有的内存都将成为low memory。如果你在这种情租旦况下耗尽了low memory,那就真的是out of memory了。

2、如果受限于必须使用32位系统,更好的解决办法是使用hugemem内核。

这种内核以不同的方式分割low/high memory,而且在大多数情况下会提供足够多的low memory到high memory的映射。在大多数案例中,这是一个很简单的修复方法:安装hugemem kernel RPM包,然后重启即可。

如果运行hugemem内核也不可能,你可以尝试将/proc/sys/vm/lower_zone_protection 的值设置为250甚至更多。这将让内核愿意保护low memory,从而在分配内存时多考虑从high memory分配。据我所知,此选项从2.6.x内核才开始可用。必要的是,您可能需要通过一些实验来找到您系统环境中最适合的值。可以使用下面方法快速的设置和检查改值:

# cat /proc/sys/vm/lower_zone_protection

# echo “250” > /proc/sys/vm/lower_zone_protection

在 /etc/sysctl.conf 中加入设置,以便启动就生效:

vm.lower_zone_protection = 250

作为最后的努力,你可以关闭oom-killer。这个选州型侍项可以导致系统挂起,所以请小心使用(风险自册吵负)!

查看当前oom-killer的状态:

# cat /proc/sys/vm/oom-kill

关闭/打开oom-killer:

# echo “0” > /proc/sys/vm/oom-kill

# echo “1” > /proc/sys/vm/oom-kill

当进程该被oom-killer杀死却没有被杀死时,相关信息会记录到 /var/log/messages:

“Would have oom-killed but /proc/sys/vm/oom-kill is disabled”

简单的就是说内存不足,看一下有哪个程序占用更大,kill掉

关于linux oom killer 日志的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 如何阅读Linux OOM Killer日志? (linux oom killer 日志)