我是使用java -jar ×× 运行java程序,其实tomcat也差不多也是在catalina.sh中配置rmi的一些东西,详情见下面:
1、配置jstatd
vi $JAVA_HOME/jre/lib/security/Java.policy(1)使用远程主机监控方式,即jstatd方式时,每次启动工具时会自动检测并连接已配置的监控主机,但无法提供远程主机内存的快照和具体信息,仅可提供cpu和内存的使用监控信息,使用jmx方式连接,如果远程的java进程重启,则需要重新建立连接,因为远程的java进程ID已变化 。、
(2)同时在jvisualvm中添加JMX链接,就可以想本机一样查看内存、线程信息。具体配置如下。
设置vm堆大小以及,配置远程监控参数
设置远程端口为8999,不需要用户名密码验证,初始化堆内存为64M、最大堆内存为128M、新生代为20M,Survivor区与Eden区内存为2:8
Java -Djava.rmi.server.hostname=主机ip -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar -Xms64M -Xmx128M -Xmn20M -XX:SurvivorRatio=2 ./live-scheduled-0.0.1-SNAPSHOT.jar
此时就可以用jconsole工具进行远程监控了,只需要使用主机ip+端口就可以连接成功
如果要让远程监控连接需要密码那么配置如下
java -Djava.rmi.server.hostname=主机IP -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxrete.ssl=false -Dcom.sun.management.jmxremote.pwd.file=/data/java/jdk1.8/jre/lib/management/jmxremote.password -jar -Xms64M -Xmx128M -Xmn20M -XX:SurvivorRatio=2 ./live-scheduled-0.0.1-SNAPSHOT.jar
并将jre目录下面jre/lib/management目录下面jmxremote.password.template复制一份到该目录,命名为jmxremote.password,然后将jmxremote.password文件内容全删除掉,
然后配置两个用户,一个为只读权限,一个为控制权限,文件内容如下
然后在远程监控时就需要用用户名和密码连接了。