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

mr.*_*ush 6 centos centos6 apache-2.2

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

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

为什么这些进程首先休眠?

服务器运行 CentOS 6 和 Apache 2.2。

use*_*517 21

杀死所有系统的休眠进程并不能解决任何问题,更不用说您遇到的问题了。


在你的方法中结构化和有条理比疯狂地拍打要好得多。

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

  1. 您要解决的实际问题是什么?

服务停止响应。1

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

    • 问题与时间有关吗?是定期发生还是随机发生。
    • 检查您的所有日志,而不仅仅是特定服务的日志,因为其他原因可能会导致问题。日志条目通常具有时间戳,这是为了帮助您关联多个应用程序和服务之间的事件 - 使用它们。如有必要,也增加日志详细程度。
    • 观察你的系统在做什么。使用 top、vmstat、iostat、sar、ps、tcpdump 等工具,甚至是成熟的监控系统

  2. 分析您收集的信息。当服务停止响应时,系统上实际发生了什么?系统资源的状态如何?

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

  4. 监视 4. 中引入的更改做了什么。

  5. 更改是否解决了问题?这个会比较好吗?是不是更糟?没有区别吗?你从这里去哪里取决于你找到了什么。您可能需要返回 2. 并收集更多相关数据或 3. 重新分析您拥有的数据或 4. 因为您确定了许多潜在的解决方案。

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

  7. 回到床上/下班回家/去酒吧。

1尽管“我的服务器很慢”,“我的服务器使用了太多内存”,但这可能是任何事情......