2016-11-16 35 views
1

我們有一個應用程序部署在Kubernetes上。其中一項服務是在JVM中運行的應用程序。Kubernetes在內存不足時應該重新啓動我的JVM應用程序嗎?

我們的應用程序有問題,消耗的內存太多。我們正在達到複製控制器中的限制集,從而使其重新啓動該容器。

爲此使用複製控制器是一個好主意嗎?或者,限制JVM上的內存(將其設置爲低於複製控制器限制的內容)並在容器中使用其他內容來重新啓動我們的應用程序更好?

如果JVM停止時出現內存不足異常,我可以使用由JVM寫入的內存轉儲。現在我對什麼佔據了記憶都是盲目的。

謝謝您的回覆!

回答

1

實際上,這不是Deployment/ReplicationController的責任。重新啓動在Pod自身內處理。至於處理內存,這不是一個微不足道的問題,你應該在兩個層面上控制它(比如堆大小等),以便你的應用程序避免碰到限制,但是如果它確實去了牆上,限制在pod上將會處理它,這是完全可以的(特別是如果你運行多一個吊艙,所以你有HA)。

這裏的事情是,調整內存限制很困難,並且可能通過試驗和錯誤+監控pod /容器指標(Prometheus/Grafana來拯救:))來做到最好。

相關問題