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

相关文章

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll