那年那日那朵花

".......(o´ω`o)......"

java应用环境有用的命令和方法

2016-06-26 19:31 jvm

记录一下在java运行环境中一些有用的命令和方法。
最近本身比较忙外加熬夜看欧洲杯,感觉身体被掏空了 (⊙_⊙)

jps 命令显示java进程

jps [options] [hostid]
常用参数说明
-m 输出传递给main方法的参数,如果是内嵌JVM则输出null
-l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径
-v 输出传给JVM的参数
例如:jps -lvm

jstack命令

查看java程序的java stack和native stack信息,如果正在运行的java程序呈现hung状态,非常有用。

jmap 命令

把java应用的堆内存信息导出来,配合mat或者jhat来分析查看。
例如:jmap -J-d64 -heap pid

jvm故障排除

1.jps获取java进程的pid
2.jstack pid >> java.txt 导出该进程的线程
3.top -H -p PID 查看对应进程的哪个线程占用CPU过高
4.echo "obase=16;${PID}"|bc 将线程PID转换为16进制,因为jstack导出的内容中就是16进制的
5.在java.txt中查找转换为16进制的线程PID,找到对应的线程栈。
6.分析负载高的线程栈是什么业务操作。优化并处理问题。

Tomcat监控

可以用windows下装jdk用jconsole查看或者是用jvisualvm添加主机后添加jmx查看
在catalina.sh中配置

CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=123456
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.1.122"  ----监控主机的hostname

jconsole

jvisualvm

查看jvm垃圾回收的情况,可以用jstat -gcutil PID 1000 1000看 如果要看老年代和持久带的容量的话可以用 jstat -gcold PID 1000 1000
PC PU OC PU 分别是持久的容量 持久带使用量 老年代容量 老年代使用量

心情

Cloudhu 个人随笔|built by django|

沪ICP备16019452号-1