CentOS 中睡眠進程過多 - 如何診斷?

CentOS 中睡眠進程過多 - 如何診斷?

我有大量的睡眠進程,大約有 600 個,其中大部分是 Apache 進程。

我應該殺死所有這些睡眠進程,還是會讓 Apache 完全失敗?

為什麼這些進程要先休眠?

伺服器運行 CentOS 6 和 Apache 2.2。

答案1

殺死系統的所有睡眠進程並不能解決任何問題,更不用說解決您遇到的問題了。


採取結構化且有條理的方法比胡亂晃動好得多。

我個人發現科學的方法(其他人稱之為有些不同)在診斷問題時,這是一個從系統管理工具包中拿出來的絕佳工具。

  1. 您想要解決的實際問題是什麼?

服務停止回應。1

  1. 所以,現在我們知道我們正在解決的實際問題是什麼,我們有了一些方向。讓我們收集一些資訊來幫助我們找到解決方案。

    • 問題與時間有關嗎?它是定期發生還是隨機發生。
    • 檢查所有日誌,而不僅僅是特定服務的日誌,因為其他原因可能會導致問題。日誌條目通常具有時間戳,這是為了幫助您關聯多個應用程式和服務之間的事件 - 使用它們。如果有必要,也增加日誌的詳細程度。
    • 觀察您的系統正在做什麼。使用 top、vmstat、iostat、sar、ps、tcpdump 等工具,甚至是完整的工具監控系統

  2. 分析您收集到的資訊。當服務停止回應時系統上實際發生了什麼?系統資源的狀態如何?

  3. 採取適當的措施進行補救。希望發生的事情非常明顯,你的內存不足,OOM 殺手出現,你的交換活動太高,你的運行隊列太長,你的 iobound 等等。的數據- 您知道該怎麼做,請返回2。

  4. 監控 4. 中引入的變更的作用。

  5. 這些變更是否解決了問題?好點嗎?情況更糟嗎?有沒有差別?你從這裡去哪裡取決於你發現了什麼。您可能需要返回 2. 並收集更多相關數據或 3. 重新分析您擁有的數據或 4. 因為您確定了許多潛在的解決方案。

  6. 記錄您的發現和所做的變更。

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

1這可能是「我的伺服器速度很慢」、「我的伺服器使用太多記憶體」等任何內容...

相關內容