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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]