我们使用Nagios来监视我们的服务器。 现在.. Linux使用我们给他们的所有内存,所以没有办法检测到我们即将耗尽内存。 由于内存使用过多,我们有几次服务器崩溃。
有什么办法来检测如果Ubuntu(Linux)启动OOM杀手? 我知道它写在日志文件中,但无论如何检测它何时启动?
/ RJ
当OOM经过时,你不能看到,唯一的办法是检查日志,并希望它在那里(有时不logging)。
有一些工具可以检查Nagios的内存使用情况,我个人使用check_mem.pl
也许通过logtail 。
oom-killer在syslog和dmesg中留下痕迹。 您可以通过一些监视工具来调用cron或脚本来“logtails”系统日志,并警告您是否有像下面那样的行
Feb 24 13:35:29 hostname kernel: [22472693.216224] foobar:23 invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
dmesg不是“logtailable”,但dmesg -c在打印后清除dmesg缓冲区,所以脚本可以简单地调用dmegs -c | grep <string> | wc -l dmegs -c | grep <string> | wc -l dmegs -c | grep <string> | wc -l值为1或更大意味着自从las运行/启动以来调用了oom-killer。 但是这会破坏你的dmesg存储信息。
显然,当你没有足够的空闲虚拟内存时,它会启动,并且从内核请求一个内存区域。 所以你真正应该监视的是你的可用内存大小。 而平均负载也是一个需要监视的主题,因为当没有足够的可用内存时它总是变高。