jstatd
启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099。
一个监控守护进程而已,需要配合其他命令行工具发挥功效。
<br />#创建一个policy文件,提供权限
cd /tmp/
touch jstatd.all.policy
#修改文件
vim jstatd.all.policy
#添加以下内容到jstatd.all.policy
grant codebase "file:/opt/java/jdk1.7.0_79/lib/tools.jar" {
permission java.security.AllPermission;
};
#修改文件属性
chmod 755 jstatd.all.policy
#后台执行 jstatd
jstatd -J-Djava.security.policy=/tmp/jstatd.all.policy &
#默认开放的是1099端口,可以通过以下命令进行修改
jstatd -J-Djava.security.policy=/tmp/jstatd.all.policy -p 10999 &
#绑定到本机ip
jstatd -J-Djava.security.policy=/tmp/jstatd.all.policy -J-Djava.rmi.server.hostname=172.16.22.251 &
jmx配置
要实现远程监控,需要可视化的OS能连上远程的机器,不然需要做端口转发,然后进行远程生产环境监控。
以下是JVM直接配置参数:
远程机器的程序需要加上JVM参数
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=6970
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
备注:另外需要检查 hostname –i,看解析出来是否为本地的IP,如是127.0.0.1或者IP为多个IP中之一,则其他的IP无效,会连接不上。
也可以使用如下的参数手动指定 hostname 或者 ip 地址
-Djava.rmi.server.hostname=172.16.22.251
Tomcat下配置监控参数设置
在catalina.sh中的JAVA_OPTS中配置以下前四行内容即可
JAVA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6970
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djavax.servlet.request.encoding=UTF-8
-Dfile.encoding=UTF-8
-Xms512m -Xmx1024m -XX:MaxNewSize=512m
-XX:MaxPermSize=512m
-Dnetworkaddress.cache.ttl=60 -Dsun.net.inetaddr.ttl=60"
jvisualvm
jvisualvm的功能及ui比jconsole还要强大的跨平台可视化工具。
关于使用,如果是开发时监控本机的JVM,那不需要任何参数,只需要执行命令行工具jvisualvm即可。
具体使用就不解释了。
远程连接jstatd
查看jstat相关信息的监控
关于远程使用,这个时候就需要刚才介绍的jstatd守护线程的帮忙了。这样做了好处是,不用修改远程程序的配置,直接就可以
监控远程的JVM,当然,如果生产环境的话,还需要端口转发等工具的帮助。
如下图:
远程连接jmx
更强大的远程监控
可以监控jstatd可以监控的内容,同时可以监控cpu,具体的线程等信息。
如下图:
原文链接:JDK命令行工具相关整理(3),转载请注明来源!