jdk(或openjdk-dev)中有一些工具,可以监控JVM状态。
VisualVM:
sun jdk自带工具。$JAVA_HOME\bin\jvisualvm.exe
jconsole:
sun jdk自带工具。$JAVA_HOME\bin\jconsole.exe
java mission control:
sun jdk自带工具。$JAVA_HOME\bin\jmc.exe
jps:查看jvm进程。
jhat:读取dump文件,生成html并开启http服务。html中还可以使用Object Query Language (OQL)进行查询。
jinfo:显示VM信息。
jmap:查看内存中对象的情况。常用参数 -heap -histo -dump
jstat:查看内存使用情况。
jstack:打印堆栈信息。可以看到JVM中线程的执行堆栈。加-l还可以看到锁的信息。
jProfiler:商业软件,监控项很全面,能够看到线程栈中各方法调用所花时间的百分比,还能看到jdbc调用所发的sql语句。
对远程jvm监控时需要安装代理。
如果需要监控远程server的JVM,需要打开server的jmx。(和防火墙)
为tomcat配置jmx,在startup脚本中设置:
-
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=1099 \
-
-Dcom.sun.management.jmxremote.ssl=false \
-
-Dcom.sun.management.jmxremote.authenticate=false \
-
-Djava.rmi.server.hostname=192.168.0.1"
(不建议写在catalina脚本中,因为shutdown脚本也会调用catalina。)
另外,jmx端口可以在tomcat的server.xml中配置,这样就不需要
-Dcom.sun.management.jmxremote.port参数了。
需要在lib下放置catalina-jmx-remote.jar
className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="1111"
rmiServerPortPlatform="1112"
另,java metrics(是一个用于度量的一个JAVA的类库)待学习。
阅读(2069) | 评论(0) | 转发(0) |