工作上,经常要对tomcat的java内存配置、tomcat线程池等进行调(luan)优(gao)。
jconsole 是一个最基础用到的jdk自带的JVM性能查看工具。
最近进行linux测试。 所以需要配置 jconsole的远程访问服务。网上找了好几个文章,才调试好。记录下经过。
---------------------------------------------------------------------------
第一版, 增加JAVA_OPTS :
if [ "$1" = "start" ] ; then#判断是否为启动
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.217.128"
fi
其中,ssl=false表示不使用ssl;authenticate=false表示不需要认证,即不需要用户名、密码,如果该参数为true,则还需要其他用户名、密码的相关参数。
需要注意的是,这几个参数在使用时要连在一起,实际使用过程中发现,如果这几个参数中间有夹杂其他的JVM参数,则可能无法开启JMX的远程访问。
在cygwin=false前面加入这段话
authenticate为false,jconsole连接远程jvm时,就不需要输入用户名和密码。
否则,要配置密码文件和密码。
可以指定密码文件的位置
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/root/soft/jdk7/jre/lib/management/jmxremote.password"
#设置密码的话,除了上面的参数配置,还有搞下密码文件
cp jmxremote.password.template jmxremote.password
#授权可写入,然后将 文件的最后两行的注释去掉。最后两行即为 【用户名 密码】
chmod u+w jmxremote.password
测试结果: 第一版:因为 JAVA_OPTS 还有其他内存参数配置,导致 jmx端口没有启动。
即:用 netstat -an |grep 10000 查不到端口监听信息。
-----------------------------------------------
第二版:修改CATALINA_OPTS 》》OK.
即:进入Tomcat/bin目录,修改catalina.sh,找到如下内容“#—–Execute The Requested Command”,在其上添加以下配置,此配置不需要用户名、密码。
CATALINA_OPTS=”$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.23.1
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false”
注意是一行。 然后测试还可以。
参考: https://blog.csdn.net/dongdong2980/article/details/78476393