监控内存和CPU VMSTAT
监控IO使用 IOSTAT
多功能诊断器 PIDSTAT
--使用jstack 导出相关的线程信息
Java工具
JPS -m -l
Jstat
是一个可以用于观察Java应用程序运行时相关信息的工具。
Jinfo
Jinfo可以用来查看正在运行的Java应用程序的扩展参数
甚至支持在运行时,修改部分参数。
Jmap
命令Jmap是一个多功能的命令,它可以生成Java程序的堆Dump文件,也可以
查看堆内对象实例的统计信息、查看ClassLoader的信息以及finalizer
Jhat
使用Jhat工具可以用于分析Java应用程序的堆快照内容。
Jstack
可以用于导出Java应用程序的线程堆栈。
------------------------------------------------------------------
Visual VM
是一个功能强大的多合一故障诊断和性能监控的可视化工具
可以替代:jstat/jmap/jhat/jstack
采用JMX连接远程
实施步骤1:
配置 tomcat catalina.bat 的参数
set JMX_REMOTE_CONFIG=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
set CATALINA_OPTS=%CATALINA_OPTS% %JMX_REMOTE_CONFIG%
注:1. -Dcom.sun.management.jmxremote.port :这个是配置远程 connection 的端口号的,要确定这个端口没有被占用
2. -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl
3. -Dcom.sun.management.jmxremote.authenticate=false 指定了JMX 是否启用鉴权(需要用户名,密码鉴权)
2,3两个是固定配置,是 JMX 的远程服务权限的
4. -Djava.rmi.server.hostname :这个是配置 server 的 IP 的
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.27.39.30
WAS上配置jmx监控:
1、登录was控制台https://10.4.119.18:9043/ibm/console/,找到自己的应用程序服务器---java和进程管理---进程定义--JAVA虚拟机,然后配置 通用JVM 参数 :
加入以下jvm参数:-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote
注意:等号后面一定要保留空格,否则会报错。
2、修改/opt/IBM/WebSphere/AppServer/java/jre/lib/management/management.properties文件,在最后加入
com.sun.management.jmxremote.port=8999
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false
注意:先执行netstat -ano | grep 8999,查看这个端口是否被使用。另外注意防火墙对8999端口的配置,要放开,否则远程机器可能连接不上.如果这个端口被占用,则换成6001
3、设置jconsole远程登录的用户名和密码
在/opt/IBM/WebSphere/AppServer/java/jre/lib/management下有个jmxremote.password.template文件,在最后面加入你要设置的用户名和密码
root nneihnyts (用户名、密码)
以上设置完成后,重启server让配置生效
实施步骤2;
Visual VM 的插件使用
实施步骤3;
性能配置参数,如果改善tomcat
实施步骤4;
如何具体的调优Java?
1)压测寻找系统瓶颈。
2)压测观察线程状态,堆的消耗,GC情况,CPU消耗。
3)压测过程性能分析CPU资源和内存资源消耗非常大的程序方法。