如何诊断杀伤力过程的原因


9

我有一台运行CentOS和www / mail / db的小型虚拟专用服务器,最近发生了几起事件,其中Web服务器和ssh无法响应。

查看日志,我发现oom-killer杀死了这些进程,可能是由于内存不足和交换不足。

谁能给我一些关于如何诊断可能导致最近事件的指针吗?可能第一个过程被杀死了吗?我还要去哪里?

Answers:


11

不,算法不是那么简单。您可以在以下位置找到更多信息:

http://linux-mm.org/OOM_Killer

如果要跟踪内存使用情况,建议运行类似以下的命令:

ps -e -o pid,user,cpu,size,rss,cmd --sort -size,-rss | head

它将为您提供使用最多内存(并可能导致OOM情况)的进程的列表。| head如果您希望检查所有过程,请删除。

如果将其放在cron上,请每5分钟重复一次,然后将其保存到文件中。至少保留几天,以便您稍后查看发生了什么。

对于ssh之类的关键服务,我建议在这种情况下使用monit自动重启它们。如果您没有远程控制台,则可以避免失去对计算机的访问权限。

祝你好运,
JoãoMiguel Neves


谢谢-在发生两次其他的oom-killer事件之后,终于可以尝试尝试使我的服务器瘫痪。需要追踪原因。
dunxd

6

最近,我遇到了一些困难,因为oom-killer踩踏的过程不一定是出错的过程。在尝试诊断时,我首先了解了我现在最喜欢的工具之一。

该实用程序就像类固醇的顶部。在预设的时间间隔内,它会分析系统信息。然后,您可以播放它以查看发生了什么。它突出显示了蓝色为80%+,红色为90%+的过程。最有用的视图是最近一次分配了多少内存的内存使用情况表。那是对我最大的帮助。

很棒的工具-不能说太多。

性能监控器之上



1

OOM只会杀死当时使用最多内存的进程。不一定超出限制或尖峰调用的过程。
同样,Linux在内存分配方面也比较松懈。AKA,如果您的进程需要5GB但仅使用3GB,Linux将让另一个进程使用2GB,而不使用它。性能>可靠性。那么当p1需要它的全5时就无法获得它

不是一个专家。只是处理自己和我所发现的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.