使用docker stack deploy部署的程序出現:task: non-zero exit (137),並自動重啓。(一般出現在部署的java程序中)
造成該問題的原因一般有下面幾種情況:
1. 通過docker stop ,或者kill -9 會出現 exit code 137
2. OOM,內存不足導致的退出,通過 journalctl -k | grep -i -e memory -e oom 查看系統出現的oom事件
一般需要確定是否是內存不足導致的退出。
本文中出現該問題的原因是docker容器啓動時設置了最大內存限制,而容器中java程序運行所需內存設置的數值大於等於容器配置的最大內存,導致程序運行一段時間後自動重啓。
docker 中 jvm內存往往出現大於xmx問題,除了參數優化外,還可以使用openj9 虛擬機(JVM的另一個實現)內存佔用會減少很多
參考: