服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

如何使用kdump /崩溃来调查OOM问题?

问题 一个服务器在多次“内存不足”消息后崩溃,我试图找出罪魁祸首。 如果是在userland – 哪个进程。 如果是在内核 – 哪个内核模块。 细节 我想了解如何使用崩溃实用程序来调查在服务器上触发OOM的内容。 作为安装一对新服务器的一部分,我开始了一个14TB DRBD设备的初始化。 大约在那个时候,在玩DRBD同步器速率configuration的同时,一些绑定的networking接口上下,其中一台服务器崩溃。 超过30秒的时间它产生了39 Out of memory: Kill process ####消息。 然后它坠毁了: Kernel panic – not syncing: Out of memory and no killable processes… 系统崩溃触发了kdump 。 现在我有一个很好的vmcore.flat文件,应该直接用来调查这个问题,但是我很难找出所有的内存在哪里。 我知道唯一的资源是Dedoimedo的网站 ,它有很好的说明 ,和内核崩溃书 。 这些也恰好是答案中提出的唯一资源,所以我认为crash是调查的唯一方法。 如果还有另外一种方法对事件进行验尸,我愿意接受。 只是crash是我意识到的唯一效用。 我现在所有的是vmcore.flat文件,我只需要知道哪个组件吃掉了所有内存。 我怀疑一个内核模块的问题,更具体地说,其中一个绑定模块(因为它是在我把一个接口拉下来的时候触发的),DRBD模块(版本8.3.15是在CentOS 6.3上用树build立的),或者是其中一个10G以太网模块( mlnx_en是由树形结构构成的,也就是树形结构的bnx2x ,它是保持活动状态的接口)。 我只需要知道是否有办法来validation我的怀疑。 到目前为止,我只设法使用crash实用程序提取以下信息: 检查了使用了多less内存 $ crash /usr/lib/debug/lib/modules/2.6.32-279.5.2.el6.x86_64/vmlinux vmcore.flat […]