今天为了定位部署在docker里面的java应用的内存问题,折腾了半天开启JMX监控,采坑较多。
在tomcat的bin目录下,修改setenv.sh
export CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx4096m -Dcom.sun.management.jmxremote.rmi.port=6666 -Dcom.sun.management.jmxremote.port=6666 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.1.1"
其中需要开启两个6666端口,且ip使用的docker主机的ip,最后在docker命令启动的时候挂载该端口即可。
docker run --name test --link mysql:mysql -e MALLOC_ARENA_MAX=1 -p 8899:8080 -p 6666:6666 -v /opt/test/sc:/test/sc -v /etc/localtime:/etc/localtime -d -m 5126M javaTest:latest