Apache-2.2
CentOS 中的睡眠程序數量過多 - 如何診斷?
我有大量的休眠程序,大約 600 個,其中大部分是 Apache 程序。
我應該殺死所有這些休眠程序,還是會讓 Apache 完全失敗?
為什麼這些程序首先處於休眠狀態?
伺服器執行 CentOS 6 和 Apache 2.2。
殺死所有系統的睡眠程序並不能解決任何問題,更不用說你遇到的問題了。
在你的方法中結構化和有條不紊比瘋狂地四處走動要好得多。
就我個人而言,我發現科學方法(其他人稱之為不同的東西)是在診斷問題時從系統管理工具包中取出的絕佳工具。
- 您要解決的實際問題是什麼?
服務停止響應。1
- 所以,現在我們知道我們正在解決的實際問題是什麼,我們有了一些方向。讓我們收集一些資訊來幫助我們找出解決方案。
- 問題時間是否相關?它是定期發生還是隨機發生。
- 檢查您的所有日誌,而不僅僅是特定服務的日誌,因為其他可能會導致問題。日誌條目通常具有時間戳,這是為了幫助您跨多個應用程序和服務關聯事件 - 使用它們。如有必要,也增加日誌詳細程度。
- 觀察你的系統在做什麼。使用 top、vmstat、iostat、sar、ps、tcpdump 等工具,甚至是完整的監控系統。
- 分析你收集到的資訊。當服務停止響應時,系統上實際發生了什麼?系統資源的狀態如何?
- 採取適當的措施進行補救。希望很明顯發生了什麼,您的記憶體不足,OOM 殺手出來玩,您的交換活動太高,您的執行隊列太長,您的 iobound 等等。如果它不明顯那麼你可能沒有收集到正確的數據——你知道該怎麼做,回到 2。
- 監視在 4. 中引入的更改。
- 更改是否解決了問題?好點嗎?是不是更糟?沒有區別嗎?你從這裡去哪裡取決於你找到什麼。您可能需要返回 2. 並收集更多相關數據或 3. 重新分析您擁有的數據或 4. 因為您確定了許多潛在的解決方案。
- 記錄您的發現和所做的更改。
- 下班回到床上/回家/去酒吧。
1這可能是“我的伺服器很慢”、“我的伺服器使用了太多記憶體”…