监控指标解读和JVM 分析&调优

简介: 监控指标解读和JVM 分析&调优

1、中间件指标

8f9ce5f6243d4b00947948942f3d55b3.png

 当前正在运行的线程数不能超过设定的最大值。一般情况下系统性能较好的情况下,线 程数最小值设置 50 和最大值设置 200 比较合适。


 当前运行的 JDBC 连接数不能超过设定的最大值。一般情况下系统性能较好的情况下,


JDBC 最小值设置 50 和最大值设置 200 比较合适。


 GC频率不能频繁,特别是 FULL GC 更不能频繁,一般情况下系统性能较好的情况下,


JVM 最小堆大小和最大堆大小分别设置 1024M 比较合适。


2、数据库指标


1e61a9842d534be78f3e197efe479b8c.png

 SQL 耗时越小越好,一般情况下微秒级别。

 命中率越高越好,一般情况下不能低于 95%。

 锁等待次数越低越好,等待时间越短越好。

image.png

image.png

 中间件越多,性能损失越大,大多都损失在网络交互了;

 业务:

 Db(MySQL 优化)

 模板的渲染速度(缓存)

 静态资源

5、JVM 分析&调优

jvm 调优,调的是稳定,并不能带给你性能的大幅提升。服务稳定的重要性就不用多说了, 保证服务的稳定,gc 永远会是 Java 程序员需要考虑的不稳定因素之一。复杂和高并发下的 服务,必须保证每次 gc 不会出现性能下降,各种性能指标不会出现波动,gc 回收规律而且干净,找到合适的 jvm 设置。Full gc 最会影响性能,根据代码问题,避免 full gc 频率。可以 适当调大年轻代容量,让大对象可以在年轻代触发 yong gc,调整大对象在年轻代的回收频 次,尽可能保证大对象在年轻代回收,减小老年代缩短回收时间;

1、几个常用工具

87d31fae53054b67bbc919b618281ae0.png

2、命令示例


jstat 工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。 使用时,需加上查看进程的进程 id,和所选参数。


jstat -class pid: 显示加载 class 的数量,及所占空间等信息


jstat -compiler pid: 显示 VM 实时编译的数量等信息。


jstat -gc pid :可以显示 gc 的信息,查看 gc 的次数,及时间


jstat -gccapacity pid: 堆内存统计,三代(young,old,perm)内存使用和占用大小


jstat -gcnew pid: 新生代垃圾回收统计


jstat -gcnewcapacity pid: 新生代内存统计


jstat -gcold pid: 老年代垃圾回收统计


除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6 是 每 250 毫秒打印一次,一共打印 6 次,还可以加上-h3 每三行显示一下标题。


jstat -gcutil pid 1000 100 : 1000ms 统计一次 gc 情况统计 100 次;


在使用这些工具前,先用 JPS 命令获取当前的每个 JVM 进程号,然后选择要查看的 JVM。


jinfo 是 JDK 自带的命令,可以用来查看正在运行的 java 应用程序的扩展参数,包括 Java System 属性和 JVM 命令行参数;也可以动态的修改正在运行的 JVM 一些参数。当系统崩 溃时,jinfo 可以从 core 文件里面知道崩溃的 Java 应用程序的配置信息


jinfo pid :输出当前 jvm 进程的全部参数和系统属性


jinfo -flag name pid: 可以查看指定的 jvm 参数的值;打印结果:-无此参数,+有


jinfo -flag [+|-]name pid: 开启或者关闭对应名称的参数(无需重启虚拟机)


jinfo -flag name=value pid: 修改指定参数的值


jinfo -flags pid :输出全部的参数


jinfo -sysprops pid :输出当前 jvm 进行的全部的系统属性


jmap 可以生成 heap dump 文件,也可以查看堆内对象分析内存信息等,如果不使用这个命 令,还可以使用-XX:+HeapDumpOnOutOfMemoryError 参数来让虚拟机出现 OOM 的时候自动 生成 dump 文件。


jmap -dump:live,format=b,file=dump.hprof pid


dump 堆到文件,format 指定输出格式,live 指明是活着的对象,file 指定文件名。eclipse 可 以打开这个文件


jmap -heap pid


打印 heap 的概要信息,GC 使用的算法,heap 的配置和使用情况,可以用此来判断内存目 前的使用情况以及垃圾回收情况


jmap -finalizerinfo pid 打印等待回收的对象信息


jmap -histo:live pid 打印堆的对象统计,包括对象数、内存大小等。jmap -histo:live 这个 命令执行,JVM 会先触发 gc,然后再统计信息


jmap -clstats pid


打印 Java 类加载器的智能统计信息,对于每个类加载器而言,对于每个类加载器而言,它 的名称,活跃度,地址,父类加载器,它所加载的类的数量和大小都会被打印。此外,包含 的字符串数量和大小也会被打印。


-F 强制模式。如果指定的 pid 没有响应,请使用 jmap -dump 或 jmap -histo 选项。此 模式下,不支持 live 子选项。


jmap -F -histo pid


jstack 是 jdk 自带的线程堆栈分析工具,使用该命令可以查看或导出 Java 应用程序中线程堆 栈信息。


jstack pid 输出当前 jvm 进程的全部参数和系统属性


相关文章
|
17天前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
22天前
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
|
24天前
|
监控 Java 编译器
Java虚拟机调优指南####
本文深入探讨了Java虚拟机(JVM)调优的精髓,从内存管理、垃圾回收到性能监控等多个维度出发,为开发者提供了一系列实用的调优策略。通过优化配置与参数调整,旨在帮助读者提升Java应用的运行效率和稳定性,确保其在高并发、大数据量场景下依然能够保持高效运作。 ####
27 1
|
26天前
|
存储 算法 Java
JVM进阶调优系列(10)敢向stop the world喊卡的G1垃圾回收器 | 有必要讲透
本文详细介绍了G1垃圾回收器的背景、核心原理及其回收过程。G1,即Garbage First,旨在通过将堆内存划分为多个Region来实现低延时的垃圾回收,每个Region可以根据其垃圾回收的价值被优先回收。文章还探讨了G1的Young GC、Mixed GC以及Full GC的具体流程,并列出了G1回收器的核心参数配置,帮助读者更好地理解和优化G1的使用。
|
27天前
|
监控 Java 测试技术
Elasticsearch集群JVM调优垃圾回收器的选择
Elasticsearch集群JVM调优垃圾回收器的选择
48 1
|
1月前
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。
|
1月前
|
监控 Java 编译器
Java虚拟机调优实战指南####
本文深入探讨了Java虚拟机(JVM)的调优策略,旨在帮助开发者和系统管理员通过具体、实用的技巧提升Java应用的性能与稳定性。不同于传统摘要的概括性描述,本文摘要将直接列出五大核心调优要点,为读者提供快速预览: 1. **初始堆内存设置**:合理配置-Xms和-Xmx参数,避免频繁的内存分配与回收。 2. **垃圾收集器选择**:根据应用特性选择合适的GC策略,如G1 GC、ZGC等。 3. **线程优化**:调整线程栈大小及并发线程数,平衡资源利用率与响应速度。 4. **JIT编译器优化**:利用-XX:CompileThreshold等参数优化即时编译性能。 5. **监控与诊断工
|
1月前
|
存储 监控 Java
JVM进阶调优系列(8)如何手把手,逐行教她看懂GC日志?| IT男的专属浪漫
本文介绍了如何通过JVM参数打印GC日志,并通过示例代码展示了频繁YGC和FGC的场景。文章首先讲解了常见的GC日志参数,如`-XX:+PrintGCDetails`、`-XX:+PrintGCDateStamps`等,然后通过具体的JVM参数和代码示例,模拟了不同内存分配情况下的GC行为。最后,详细解析了GC日志的内容,帮助读者理解GC的执行过程和GC处理机制。
|
2月前
|
Arthas 监控 数据可视化
JVM进阶调优系列(7)JVM调优监控必备命令、工具集合|实用干货
本文介绍了JVM调优监控命令及其应用,包括JDK自带工具如jps、jinfo、jstat、jstack、jmap、jhat等,以及第三方工具如Arthas、GCeasy、MAT、GCViewer等。通过这些工具,可以有效监控和优化JVM性能,解决内存泄漏、线程死锁等问题,提高系统稳定性。文章还提供了详细的命令示例和应用场景,帮助读者更好地理解和使用这些工具。
|
2月前
|
监控 架构师 Java
JVM进阶调优系列(6)一文详解JVM参数与大厂实战调优模板推荐
本文详述了JVM参数的分类及使用方法,包括标准参数、非标准参数和不稳定参数的定义及其应用场景。特别介绍了JVM调优中的关键参数,如堆内存、垃圾回收器和GC日志等配置,并提供了大厂生产环境中常用的调优模板,帮助开发者优化Java应用程序的性能。