Apache-2.2
apache2 Web伺服器上的奇怪過載
我最近從另一個開發人員那裡繼承了一個 Web 伺服器設置。它基本上如下:
2 個執行 apache 的 Web 伺服器 2 個執行 nginx 的負載平衡器 2 個執行 MySQL 的數據庫伺服器
每隔一周左右,Apache Web 伺服器就會對請求無響應,負載均衡器最終會返回 504 網關超時。我登錄到 Web 伺服器並檢查了它返回的正常執行時間:
18:40:49 up 5 days, 20:15, 1 user, load average: 122.37, 119.80, 107.57
與實例可用的程序數 8 相比,這非常高。為了盡快讓事情恢復線上,我最終重新啟動了網路伺服器,一切都恢復了正常:
18:54:19 up 5 min, 1 user, load average: 0.11, 0.22, 0.10
我不是在要求明確的答案,因為我應該進一步調查問題的根源,但我想要一些關於這個問題的提示和建議:
- 為什麼你認為這可能會發生?
- 我可以通過哪些方式進一步研究此問題以找出問題的根源?我需要一些關於在哪裡尋找什麼的指示。
謝謝您的幫助。
通過重新啟動修復的高負載可能是某種洩漏的症狀。如果記憶體使用量增加是由於記憶體洩漏,或者僅僅是因為應用程序平台維護了一些資料結構,這些資料結構會隨著時間的推移而增長,那麼伺服器最終可能會進行大量交換。
這顯然取決於很多因素,但我已經看到記憶體太緊的網路伺服器表現出像你描述的那樣的症狀。
另一種可能性是應用程序產生了後台執行緒,這些執行緒由於某種原因繼續執行並花費 CPU 時間或其他資源。
我強烈建議您向前任所有者詢問可能消耗資源(記憶體和 CPU)的線索。如果伺服器受到威脅,您描述的症狀也可能發生,但在不知道伺服器應該如何執行的情況下,很難分辨出區別。即使妥協不是解釋的一部分,您仍然需要了解應用程序才能調試問題。