为什么 Debian 会因 OOM 而崩溃

为什么 Debian 会因 OOM 而崩溃

我最近通过重新安装和重新配置将我的服务器从 Debian squeeze i386 升级到了 wheezy amd64。此外,我希望能够启动虚拟客户机,所以我也安装了 XEN。

然后我遇到了一个问题,OOM 杀手不时会破坏我的 Dom0 上的多个进程。然后我重新启动并禁用了几个服务(如 apache2、mysql、postgresql 等)。现在似乎没有进程被破坏了(不确定,因为它不是定期发生的,而是随机发生的)。但是:如果我对机器施加一些高负载(访问加密文件系统),OOM 杀手就会被激活。

不幸的是,问题发生后系统就无法使用了。所以我无法通过 ssh 进行访问调查。而且通过控制台进行的物理调查大多数时候都会挂起。

我有一个atop守护进程每分钟运行一次,所以我可以看到崩溃前的内存和交换消耗情况:RAM 总共为 1GB (880MB)(静态分配给 Dom0,没有膨胀),其中约 440 MB 是缓存。一些 MB 是缓冲区,大约 20MB 是空闲的。交换总共为 25GiB,完全空闲。

我不明白的是:如果需要更多 RAM,为什么内核不关闭部分缓存。它是缓存,因此可能发生的只是性能问题,但系统将保持稳定。这样系统就会崩溃。另外,为什么其他程序使用的不需要的内存部分没有放在交换区?应该有足够的空间来做你想做的事。

我有时会在控制台上看到一条消息,提示某个任务(jbod/raid5 或类似任务)被阻塞了 (?) 超过 120 秒。我不确定这是 OOM 问题的原因还是影响。

现在我的问题是:

  • 这可能是 XEN 的问题吗?
  • 这可能是硬件问题吗?RAM 还是 HD?
  • 我该怎么做才能避免将来发生崩溃?

编辑:我刚刚尝试重现该错误。它确实崩溃了,但这次(我不确定在其他情况下是否还存在其他错误)挂起的程序是 xenwatch。因此没有程序访问硬盘。

相关内容