之前遇上一个Dockerfile启动程序内存不断增长问题,感觉是个很坑的问题,记之。
刚开始从别人那里抄来的启动程序的命令:
ENTRYPOINT ["java","-Xms2G -Xmx2G -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.awt.headless=true -XX:+UseG1GC ","-jar","/api.jar"]
这个命令启动的程序可以正常跑,但是在监控中看到运行的过程中内存不断增长,命令中设置的jvm阈值没有效果,直到超过云平台分配给程序的内存之后,程序挂掉重启。
在百度尝试了各种可能的原因后无果,最后对比同事正常运行的程序,发现原因竟然是 命令不能换行
参照同事启动命令的新命令:
ENTRYPOINT java -Xms2G -Xmx2G -XX:+UseG1GC -Dcom.sun.management.jmxremote.port=1055 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.awt.headless=true -jar /api.jar