系统故障排查方法
1.操作系统层面:
1.1.cpu使用率过高 1). us高(用户程序忙,死循环等), 2).sy高(内核忙,线程多,写入繁忙等) 3).wio高(写入量过大等) 像redis,es,memcache,mq之类中间件 读写频繁,wio值相对较大 1.2. 内存,主要看内存剩余量,是否发生swap 1.3. io繁忙,iostat, iotop诊断出那个程序在写文件,如果这些写入是必须的,写这些文件是否存在随机写,有无使用缓冲等。 1.4. 网络流量大,链接过多,too open manyfiles,是否接口响应慢导致的,否则是否该增加更多服务器。
- 常用命令:top/free/vmstat/iostat
- 常用工具:tsar,iftop
tsar使用:(tsar --cpu/--mem/--tcp/--traffic)
iftop使用查看流量(traffic)
2.应用程序JVM层面
2.1 线程有没有死锁,特点是某些业务接口慢或没响应,其余接口正常(jstack分析)
2.2 cpu某个核使用率持续处于高水平,可能是死循环导致 (jstack分析)
2.3 load不高,cpu使用率不高,可能是频繁gc导致 (jstat jmap分析)
- 常用命令 jstat/jmap/jstack/jinfo
系统故障时,可利用脚本快速输出当前jvm快照: PID:当前java进程ID 如下: echo -e "Dumping the jdump ...\c" jstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1 //输出 jvm的堆栈快照 echo -e ".\c" jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1 //输出 JVM的类加载,配置等信息 echo -e ".\c" jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1 //输出当前gc的使用情况 echo -e ".\c" jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1 //输出当前gc的空间使用率 echo -e ".\c" jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1 // echo -e ".\c" jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1 //输出当前 堆中各个代使用情况 echo -e ".\c" jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1 //输出当前 堆中存活的对象(最好top一下前20或30) echo -e ".\c"
相关文章:
- JAVA虚拟机-JMM内存模型(六)
-
JAVA虚拟机-JVM性能调优(五) -
JAVA虚拟机-G1 Heap Structure(四) -
JAVA虚拟机-CMS Heap Structure(三) -
JAVA虚拟机-GC介绍和垃圾算法理解(二) -
JAVA虚拟机-Java体系结构及hotspot介绍(一)
相关推荐
《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...
java虚拟机(JVM)调优案例分析与MyEclipse性能调优实战
深入理解Java虚拟机详细视频教程,包括jvm性能调优、Java内存模型及虚拟机原理。有详细的文档资料,配合深入理解Java虚拟机书籍学习效果更佳
《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...
java虚拟机(JVM)调优案例分析与Eclipse性能调优实战
在深入讨论JVM(Java虚拟机)调优之前,我们有必要先了解一下虚拟机的基本概念和堆栈的区分。Java程序在运行时,所有的数据都存储在JVM的内存模型中。在内存模型中,有两大重要区域,即堆(Heap)和栈(Stack)。堆主要...
JVM性能调优 JVM(Java Virtual Machine)是Java程序执行的核心组件,负责执行Java字节码指令。JVM性能调优是Java开发者应该掌握的重要技能,以下是JVM性能调优的知识点总结: JVM基础知识 * 虚拟机:是一种软件...
在Java虚拟机(JVM)中,内存主要被划分为以下几个区域: 1. **堆区(Heap)**:堆区是用于存储初始化的对象、成员变量等数据的地方。所有对象实例和数组都需要在堆上分配空间。 - **新生代(Young Generation)**:由...
在《实战Java虚拟机——JVM故障诊断与性能优化》一书中,作者深入探讨了如何对JVM进行故障排查和性能调优,通过源码分析来帮助读者理解其内部工作原理。下面我们将根据书中的主题,详细阐述相关的知识点。 1. **JVM...
标题《JVM系列之性能调优参考手册(实践篇)》涉及的知识点主要集中在Java虚拟机(JVM)性能调优的实践操作。JVM作为Java程序运行的基础环境,对程序性能有着决定性影响。本手册的目的是指导开发者如何对JVM进行性能...
- **Java虚拟机栈**:用于存储每个线程的方法执行过程中所需的局部变量表、操作数栈、动态链接、方法出口等信息。 - **本地方法栈**:与Java虚拟机栈类似,但服务于本地方法的调用。 - **Java堆**:所有线程共享的...
根据提供的文件标题、描述、标签以及部分内容,我们可以深入探讨与Java虚拟机(JVM)相关的多个核心知识点。以下是对这些主题的详细阐述: ### Java虚拟机(JVM)概述 Java虚拟机(JVM)是一种用于执行Java字节码的...
通过阅读《实战Java虚拟机——JVM故障诊断与性能优化》,读者可以系统地学习JVM相关知识,提升故障排查和性能调优的能力。配合提供的源码和在线资源,读者可以在实践中加深理解和应用,使自己的Java开发技能更上一层...
第20节Java虚拟机-高性能Java虚拟机00:02:58分钟 | 第21节Java虚拟机-TaobaoVM00:03:06分钟 | 第22节Java内存区域-简介00:07:56分钟 | 第23节Java内存区域-Java虚拟机栈00:12:04分钟 | 第24节Java内存区域-程序...
《JVM性能调优-JVM内存整理及GC回收》是一份深入探讨Java虚拟机(JVM)优化的重要学习资料,特别适合对JAVA编程有经验的开发者。这份文档详细阐述了JVM性能调优的关键概念,包括JVM内存模型、垃圾回收(Garbage ...
Java JVM(Java虚拟机)内存分配与调优是Java开发者必须掌握的重要技能,它涉及到程序的性能优化和稳定性。在Java应用中,JVM扮演着至关重要的角色,它负责解析字节码、管理内存以及执行线程等。本文将深入探讨JVM...
本文档是一篇关于JVM(Java虚拟机)性能调优的经典实战总结。在实际应用开发与维护过程中,JVM性能调优是一个非常重要的话题,它直接关系到应用程序运行效率、资源利用以及用户体验等多方面因素。本总结旨在分享作者...
JVM性能调优-JVM内存整理及GC回收 JVM(Java Virtual Machine)性能调优是 Java 开发者需要掌握的重要技能之一。 JVM 的性能调优主要涉及到 JVM 内存整理、垃圾回收(GC)机制等方面。 Java 中的值传递和引用传递...
Java虚拟机实战-垃圾回收及性能调优