您的位置:首页 > 运维架构

第七章 JVM性能监控与故障处理工具(1)

2016-02-07 18:23 477 查看
1、定位系统问题

依据

GC日志

堆转储快照(heapdump/hprof文件)

线程快照(threaddump/javacore文件)

运行日志

异常堆栈

分析依据的工具

jps:显示指定系统内的所有JVM进程

jstat:收集JVM各方面的运行数据

jinfo:显示JVM配置信息

jmap:形成堆转储快照(heapdump文件)

jhat:分析heapdump文件

jstack:显示JVM的线程快照

jconsole

visualVM

说明:后边两种是具有图形化界面的。

2、jps(是其他所有命令的基础)

作用:列出所有的JVM虚拟机进程。

格式:jps -l

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.Map"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jstack</title>
</head>
<body>
<%
for(Map.Entry<Thread, StackTraceElement[]> stackTrace : Thread.getAllStackTraces().entrySet()){
Thread thread = (Thread)stackTrace.getKey();
StackTraceElement[] elements = (StackTraceElement[])stackTrace.getValue();

/* if(thread.equals(Thread.currentThread())){
continue;
} */
out.println("\n线程:"+thread.getName()+"\n");
for(StackTraceElement ele : elements){
out.println("\t"+ele+"\n");
}
}
%>
</body>
</html>


View Code
注意:代码中我注释掉一段,是因为想也查出当前线程的堆栈信息,作者并没有这个注释。

总结:

JVM性能相关的6个常用的JDK命令

jps:查询JVM中的所有进程,找出将要操作的PID,是所有命令的基础

jstat:查看相应JVM进程的gc、类加载卸载信息,是没有GUI界面查看JVM运行数据的首选

jinfo:查看和在运行期动态修改JVM配置参数

jmap:生成堆转储快照和比较占内存的对象

jhat:配合jmap分析堆转储日志,除非没有其他工具可做这个事儿,否则就不用该工具

jstack:生成线程快照,定位线程长时间卡顿的原因(线程间死锁、死循环、请求外部资源导致的长时间等待)

输出gc信息到控制台

-XX:+PrintGCDetails:输出GC的详细信息

-XX:+PrintGCTimeStamps:输出GC的时间信息

-XX:+PrintGCApplicatonStoppedTime:GC造成的应用暂停的时间

输出gc信息到文件

以上三个参数在这里依旧适用

-Xloggc:文件路径/gc.log:输出到文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: