CentOS中睡眠过程的数量过多 – 如何诊断?

我有大量的睡眠进程,大约600个,其中大部分是Apache进程。

我应该杀死所有这些睡眠过程,还是会使Apache完全失败?

为什么这些过程睡在首位?

服务器运行Apache 2.2的CentOS 6。

杀死所有系统的睡眠进程不会解决任何问题,更不用说你遇到的问题了。


在你的方法中,结构化和系统化要比狂野地扑面而来。

就我个人而言,我发现科学方法 (其他人称之为不同的东西 )是一个很好的工具,可以在诊断问题时从系统pipe理工具包中取出。

  1. 你试图解决的实际问题是什么?

服务停止响应。 1

  1. 所以,现在我们知道我们正在解决的实际问题是什么,我们有一些方向。 让我们收集一些信息来帮助我们找出解决scheme。

    • 问题时间有关吗? 这是否定期或随机发生?
    • 检查你的日志,所有这些,不只是特定的服务的日志,因为别的东西可能会导致这个问题。 日志条目通常有时间戳,这是为了帮助您关联多个应用程序和服务之间的事件 – 使用它们。 如有必要,也可以增加日志冗长度。
    • 看看你的系统在做什么。 使用诸如top,vmstat,iostat,sar,ps,tcpdump甚至全面监控系统的工具 。
  2. 分析您收集的信息。 当服务停止响应时,系统上实际发生了什么? 系统资源的状态是什么?

  3. 采取适当的措施进行补救。 希望这是很明显的发生了什么事情,你内存不足,OOM杀手出来玩,你的交换活动太高,你的运行队列太长,你iobound等等。如果不明显,可能不会收集正确的数据 – 你知道该怎么做,回到2。

  4. 监视4.做的更改。

  5. 这些改变是否解决了这个问题? 好点吗? 情况更糟吗? 有没有区别? 你从哪里出发取决于你的发现。 您可能需要返回2.收集更多相关数据或3.重新分析您拥有的数据或4.因为您确定了一些可能的解决scheme。

  6. logging您的发现和您所做的更改。

  7. 回去睡觉/下class回家/到酒吧。

1这可能是任何东西,虽然“我的服务器很慢”,“我的服务器使用太多的内存”…