Java故障排除,分析,监视和管理工具
jstack
查进程–>根据进程查线程–>看看哪个线程耗的CPU多。找到方法,即可。
jps -l可以查到服务的进程号。
jstack -l $pid
查看进程:top
查看进程内最耗费CPU的线程:top -Hp pid 或者ps -Lfp pid或者ps -mp pid -o THREAD, tid, time
ps -mq pid 指定的进程产生的线程数目
JMX
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。
开启jmx:
无需验证的配置:
1 | -Dcom.sun.management.jmxremote |
将-Dcom.sun.management.jmxremote.authenticate=false
去掉就是需要验证登录名和密码。
验证用户的配置文件在$java_home/jre/lib/management/jmxremote.password
默认有一个$java_home/jre/lib/management/jmxremote.password.template
修改下即可。
jmxremote.password.template
默认是只读权限。
更改为可写的权限 chmod a+w jmxremote.password
修改后把jmxremote.password的
读权限取消 a-r
。否则会提示:Error: Password file read access must be restricted:
management/jmxremote.access配置下权限。
连接时指定ip:端口和jmx连接即可。
远程的线程dump可以dump查看,堆的dump是需要从远程拉到本地来查看。
1 | java |
主机名为ip地址
飞行记录: -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
jvisualvm jmc