【问题标题】:monitor and kill runaway processes using 100% IO?使用 100% IO 监视和杀死失控进程?
【发布时间】:2010-05-06 21:01:18
【问题描述】:

我有一些进程必须以高优先级 (chrt 98) 运行,这些进程偶尔会决定硬锁定并将 1 个核心固定在 100%(不是什么大问题),但更重要的是它将使用所有 IO在一个系统上,它不可能通过 ssh 登录到机器来杀死它或在未加载到 ram 的机器上执行任何任务。如果我碰巧有类似 htop 的东西已经在运行,我可以很好地结束这个过程。是否有任何类型的实用程序/方法来监视这种类型的失控进程并杀死任何使用 100% 系统 IO 超过 X 时间的东西?谢谢!

【问题讨论】:

标签: linux unix filesystems sysadmin


【解决方案1】:

你不能用nice(并且优先级较低)启动程序吗?这样至少你应该能够 ssh 进入盒子并轻松杀死它。

更好的解决方案当然是修复违规进程的行为(需要详细信息)。

This serverfault thread 似乎也包含您具体要求的内容。

【讨论】:

  • 感谢您的回复!不幸的是,我无法修复这种行为,因为崩溃的原因会随着安装的每个更新/随机插件而改变。您链接的线程实际上是我在意识到问题与 IO 相关之前重新开始的线程,不幸的是,单独监控 cpu 使用情况可能无法解决,因为 monit 不够准确,无法确定多核上的确切 cpu 使用情况机器。我认为 ionice 可能会有所帮助,但我希望有一些我不知道的文件系统使用监控工具可以帮助解决这个问题。
【解决方案2】:

假设应用程序正在消耗磁盘 IO,您可以将它正在访问的文件系统移动到单独的磁盘上吗?这样一来,您就可以在安装了操作系统的磁盘上保留 IO,并且应该能够登录和管理(即杀死!)该进程。

【讨论】:

    【解决方案3】:

    正如另一位海报所说,使用nice 运行您的进程是可行的方法,但您确实提到您希望以高优先级运行它,这很奇怪......请注意,如果您正在运行一个处于最高优先级的进程并且它被固定,你的监控系统甚至可能无法杀死它,除非你的监视器仍然处于更高的优先级。总之……

    god,以及其他几个进程管理工具,可以很容易地杀死一个进程,如果它以多种方式中的任何一种行为不端.. 配置看起来像这样 - 你在特定的时间间隔设置检查,然后你可以说“经过五次检查,如果它的 CPU 使用率始终高于 98%,则对其进行核对”:

      restart.condition(:cpu_usage) do |c|
        c.above = 98.percent
        c.times = 5
      end
    

    另一个您可能会看到的不同观点是来自 runit 系统的 chpst - 它允许您优雅地设置事物的界限(但对于 CPU 限制,nice 仍然是我想要使用的工具首先)。

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2011-09-15
      • 2012-08-16
      相关资源
      最近更新 更多