AWS EC2 執行個體執行 NodeJs 應用程式時記憶體不足,因日誌抑製而無法辨識根本原因

AWS EC2 執行個體執行 NodeJs 應用程式時記憶體不足,因日誌抑製而無法辨識根本原因

如標題所述,我們有一個 NodeJS 應用程式在 AWS 上的 EC2 執行個體上運行,該應用程式偶爾會耗盡記憶體並終止進程。

從業務角度來看,這並不是真正的障礙,因為冗餘系統可確保另一個執行個體啟動並透過負載平衡器可用。但我們仍然想找出是什麼導致實例記憶體不足,以便我們可以完全阻止它。

我們查看了有關進程終止的日誌,試圖找出發生了什麼,但由於沒有可用內存,作業系統似乎無法在此期間寫入任何日誌。在它殺死進程後,它會記錄它已經抑制了許多日誌,然後像平常一樣繼續。因此,我們假設日誌抑制阻止我們獲得有關問題實際原因的更多資訊。

我們已經嘗試關閉日誌抑制,但在進程無響應期間它仍然不記錄任何內容,只是現在它不報告其抑制的日誌數量。

知道我們如何找出導致進程記憶體不足的原因嗎?

答案1

並殺死該進程。

第一的你需要做的就是停止記憶體不足。減少主機上的過度使用。

在 /etc/sysctl.d 中新增一個文件,其中包含(最初):

vm.overcommit_memory = 2
vm.overcommit_ratio = 15

然後運行sudo sysctl -p (您可能希望稍後調整比例)。

然後你就可以開始尋找消耗大量記憶體的東西。

相關內容