使用100%IO监控并杀死失控进程?

时间:2010-05-06 21:01:19

标签: linux unix filesystems sysadmin

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

3 个答案:

答案 0 :(得分:0)

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

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

This serverfault thread似乎也包含了你特别要求的内容。

答案 1 :(得分:0)

假设应用程序正在使用它的磁盘IO,您是否可以将它访问的文件系统移动到不同的磁盘上?这样你就可以在安装操作系统的磁盘上备用IO,并且应该能够登录并管理(即杀死!)这个过程。

答案 2 :(得分:0)

正如另一张海报所说,使用nice运行您的流程是可行的方法,但您确实提到您希望以高优先级运行它,这很奇怪...请注意,如果您'以最高优先级重新运行进程并且它被挂起,您的监控系统甚至可能无法杀死它,除非您的监视器仍处于更高优先级。无论如何....

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

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

你可能会看到的另一个不同的看法是来自runit系统的chpst - 它允许你优雅地设置事物的界限(但是对于CPU限制,nice仍然是工具我首先达到目标。