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