我最近遇到了oom-killer在一段时间后开始杀死进程的问题。我可以看到内存消耗了,但到了服务器时,它已经不再清楚它消耗了什么。有一个很好的非显而易见的地方可以获得有关oom-killer的更多信息吗?例如。有关激活时进程的详细信息,有关已删除进程的详细信息以及选择原因?
我正在寻找一个特定的地方来查找此信息,收集它的特定工具或一些配置以改进oom-killer报告。我不是在寻找关于oom-killer的一般信息。 / var / messages默认情况下只包含有关空闲/已分配内存的详细报告,但不包含分配给它的特定进程。
答案 0 :(得分:2)
您可以查看消息日志文件以查看被杀死的进程以及一些相关信息。至于原因:
......清算的理想候选人是最近开始的非特权流程,与其子女一起使用大量内存,一直很好,没有原始I / O.像nohup'd并行内核构建的东西(这不是一个糟糕的选择,因为所有结果都保存到磁盘,当'make'终止时,很少有工作丢失。)
来自here。
你可以定义一些不受杀手影响的进程,调整swappiness参数以防万一它太低(这会让杀手触发得快)并检查列出的内容here
答案 1 :(得分:1)
通常,您应该在/ var / log / messages中收到一条消息,其中包含与oom-killer杀死的进程相关的大量详细信息。
答案 2 :(得分:1)
这不是您问题的确切答案,但Linux上的malloc(3)
手册页有一些关于如何关闭内存过度使用的信息
echo 2 > /proc/sys/vm/overcommit_memory