java 溯本求源之基础(十八)之Monitoring--jmc

2024-04-22 21:04

本文主要是介绍java 溯本求源之基础(十八)之Monitoring--jmc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.JMC概述

        JMC全称Java Mission Control,集成了多个功能强大的组件,其中最核心的两部分是管理控制台和Java Flight Recorder。管理控制台允许开发者实时监控应用的运行状态,捕捉各种性能指标;而Java Flight Recorder则提供了一种高效的数据记录方式,可以在不显著影响系统性能的情况下,记录下应用的详细运行数据。除此之外,JMC还支持插件扩展,使得它可以更灵活地满足特定的监控需求。

        JMC不仅是一款功能全面的工具,还特别注重用户体验和操作便捷性。它的用户界面简洁直观,即使是不太熟悉深度性能调优的开发者也能轻松上手。此外,JMC的灵活性和扩展性使其能够轻松集成到各种Java开发和测试环境中,无论是在开发初期的性能评估,还是在生产环境中的故障诊断,都能发挥重要作用。

2.配置
2.1配置JMC

        在首次启动JMC后,可能需要进行一些基本配置,以优化其性能监控功能:

  • 工作空间选择:用户可以指定一个工作空间,JMC将在此处存储用户设置和临时数据。
  • 内存配置:为了保证JMC运行时的性能,可适当调整JVM参数,例如增加最大堆内存设置。
  • 安全设置:如果需要远程监控Java应用,需配置JMC的安全参数,包括远程连接的认证方式。远程连接时需要增加点参数

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.port=<PORT>

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

-Djava.rmi.server.hostname=ip

-Dcom.sun.management.jmxremote.rmi.port=<PORT>     如果未指定,JMX服务可能会随机选择一个端口用于RMI通信,这可能会被防火墙阻止。显式设置RMI端口可以帮助确保连接稳定。

2.2 主要功能
2.2.1管理控制台

        JMC的管理控制台提供了丰富的功能,帮助开发者监控应用的实时性能数据:

  • 实时性能监控:展示CPU使用率、内存使用情况、线程状态等关键性能指标。
  • 自定义仪表盘:用户可以根据需要自定义监控仪表盘,关注对特定项目重要的指标。

2.2.2Java Flight Recorder

        Java Flight Recorder (JFR) 是一个强大的数据收集框架,它可以在对应用性能影响极小的情况下,记录详细的运行时信息:

  • 事件录制:JFR可以记录各种事件,包括Java级别的事件和JVM内部事件,如垃圾收集、线程启动等。
  • 数据分析:JFR收集的数据可以在JMC中进行详细分析,帮助开发者定位性能瓶颈或异常行为。

        这里其实我们在介绍java -XX的属性的时候也提到过,那就是针对jfr的参数

2.2.3插件系统

        JMC支持通过插件扩展其功能,这意味着开发者可以安装第三方插件或开发自定义插件来满足特定监控需求:

  • 插件安装:用户可以通过JMC的插件管理界面搜索、安装和管理插件。
  • 插件开发:有经验的开发者可以利用JMC提供的API开发专属插件,增强其监控能力。
3.常见应用场景
3.1识别内存泄漏

        内存泄漏是Java应用中常见的问题之一,会导致应用随着时间的推移而变得越来越慢,最终可能出现内存耗尽的情况。使用Java Mission Control可以有效地诊断此类问题:

  1. 启动Java Flight Recorder:对目标应用进行记录,特别关注内存相关的指标,如堆内存使用和垃圾回收活动。
  2. 分析记录数据:在JMC中分析收集到的数据,查找异常的内存使用模式或频繁的垃圾回收行为。
  3. 定位泄漏源:利用JMC提供的详细堆分析工具,识别持有大量内存且生命周期异常的对象。

        当然最常见的还是我们dump出来一个文件,因为对于TOB来说 我们不能直接访问的。

3.2优化应用响应时间

        对于需要快速响应的应用,任何延迟都可能影响用户体验。JMC可以帮助开发者找到导致响应延迟的原因:

  1. 记录应用性能:在Java Flight Recorder中开启对响应时间敏感的事件记录,如线程锁等待和网络I/O操作。
  2. 分析性能瓶颈:使用JMC分析这些事件的记录,识别可能导致延迟的操作或代码段。
  3. 实施优化:根据分析结果调整代码或配置,如优化数据库查询或减少不必要的同步操作。
3.3 调试生产环境中的异常

        在生产环境中直接调试问题通常具有一定的风险,JMC提供了一种低风险的诊断方法:

  1. 远程监控生产应用:配置JMC以安全地连接到生产环境中的Java应用。
  2. 实时数据观察:监控关键性能指标和日志,实时捕捉异常情况。
  3. 问题追踪和分析:一旦发现问题,快速启动记录并在问题发生后进行详细分析,以减少对生产环境的干扰。
4.总结
4.1JMC的主要优势

        Java Mission Control是一款强大的性能监控和诊断工具,专为Java应用设计。它的主要优势包括:

  1. 全面的性能数据:JMC提供详尽的性能监控数据,帮助开发者深入理解应用在运行时的行为。
  2. 实时诊断能力:能够在应用运行过程中实时收集和分析数据,及时发现并解决性能问题。
  3. 低开销的数据收集:Java Flight Recorder提供的数据收集机制对应用性能的影响极小,适合在生产环境中使用。
  4. 易于集成和使用:JMC可以轻松集成到Eclipse等开发环境中,使用方便,用户界面友好。
  5. 扩展性强:支持通过插件扩展功能,可根据具体需求定制监控和分析工具。
4.2 JMC在现代Java开发中的重要性

        在快速迭代和高质量要求的当今软件开发环境中,性能监控和诊断工具的重要性日益凸显。总之,Java Mission Control是每个Java开发者工具箱中的必备工具,它的强大功能和灵活性使其成为提升Java应用性能和稳定性的关键助力。随着技术的不断发展,JMC也将继续演进,为Java社区提供更多的支持。

这篇关于java 溯本求源之基础(十八)之Monitoring--jmc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/926851

相关文章

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注