工作上,经常要对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”
注意是一行。 然后测试还可以。

linux jconsole的远程配置--实测可用-LMLPHP

linux jconsole的远程配置--实测可用-LMLPHP

参考: https://blog.csdn.net/dongdong2980/article/details/78476393

05-27 18:35