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社区提供更多的支持。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQLite的DBSTAT 虚拟表(三十六)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite运行时可加载扩展(三十五&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 1. 概述 DBSTAT 虚拟表是一个只读的同名虚拟表&#xff0c;返回 有关用于存储内容的磁盘空间量的信息 的 SQLite 数据库。 示例用例…

陈奂仁联手 The Sandbox 推出“Hamsterz Doodles”人物化身系列

全新人物化身系列结合艺术与实用性 开创元宇宙新篇章 著名亚洲唱作歌手兼香港电影金像奖得主陈奂仁携手 The Sandbox&#xff0c;兴奋地宣布推出新的元宇宙人物化身系列 —— Hamsterz Doodles 仓鼠涂鸦。 陈奂仁在 The Sandbox 推出 Hamsterz Doodles 系列&#xff0c;将艺术与…

3i平台体验性能加持,13600KF+B760M+撼与科技A770 TITAN装机体验

在2022年&#xff0c;intel重启显卡线&#xff0c;带来了多款性价比十分不错的显卡。而近段时间&#xff0c;又有传言说intel第二代产品e即将面世&#xff0c;甚至已经有数款Battlemage GPU曝光&#xff0c;让不少intel忠实粉丝直呼期待&#xff0c;或许在今年年底&#xff0c;…

【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

一、TRTC 初识 TRTC 是什么 TRTC&#xff08;Tencent RTC&#xff09;腾讯实时音视频&#xff0c;源自于 QQ 音视频团队&#xff0c;是基于 QQ 音视频多年来的音视频技术积累&#xff0c;位于腾讯云的 RTC 云服务。TRTC 支持腾讯会议、企业微信直播、微信视频号、腾讯云课堂、…

AI大模型探索之路-实战篇2:基于CVP架构-企业级知识库实战落地

目录 前言 一、概述 二、本地知识库需求分析 1. 知识库场景分析 2. 知识库应用特点 3. 知识库核心功能 三、本地知识库架构设计 1. RAG架构分析 2. 大模型方案选型 3. 应用技术架构选型 4. 向量数据库选型 5. 模型选型 三、本地知识库RAG评估 四、本地知识库代码落地 1. 文件…

leetcode最大间距(桶排序+Python)

虽然直接排完序&#xff0c;再求最大差值更快&#xff0c;这里我们还是学一下桶排序。 桶排序主要维护一个bucket&#xff0c;初始bucket【i】 0&#xff0c;遍历nums&#xff0c;当i存在时&#xff0c;令bucket【i】 1&#xff0c;表示存在。遍历完nums&#xff0c;bucket中有…

【点云语义分割】弱监督点云语义分割-双教师指导的对比学习

Weakly Supervised Learning for Point Cloud Semantic Segmentation With Dual Teacher 摘要&#xff1a; 为了增强特征学习能力&#xff0c;我们在这项工作中引入了双教师指导的对比学习框架&#xff0c;用于弱监督点云语义分割。双教师框架可以减少子网络耦合&#xff0c;促…

Java web应用性能分析之服务端慢[网络慢]

Java web应用性能分析之服务端慢&#xff0c;如果是网络原因引起的服务端慢&#xff0c;经常会被忽略&#xff0c;很多时候我们第一时间不会去排查网络原因。出现这种情况也很正常&#xff0c;因为应用的外部网络都是超100M的大宽带服务器&#xff0c;而内部则是千兆网卡或者万…

SpringCloud 与 Dubbo 的区别详解

一、Spring Cloud 和 Dubbo 的概述 1.1 SpringCloud 简介 SpringCloud 是一个用于构建云原生应用的框架集合&#xff0c;它为开发者提供了一套完整的工具链&#xff0c;用于快速搭建分布式系统。SpringCloud 基于 SpringBoot 开发&#xff0c;具有如下特点&#xff1a; 提供…

mysql常见语法操作笔记

1. 数据库的基本操作 1.1. MYSQL登录与退出 D:\phpstudy_pro\Extensions\MySQL5.7.26\bin 输入 mysql -uroot -proot -h127.0.0.1 退出的三种方法 mysql > exit; mysql > quit; mysql > \q; 1.2. MYSQL数据库的一些解释 注意&#xff1a;数据库就相当于文件夹 …

类和对象(2)——封装(封装的概念、包、staic)

前言 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主要研究的就是封装特性。何为封装呢&#xff1f;简单来说就是套壳屏蔽细节。 一、什么是封装 1.1 概念 将数据和操作数据的方法进行有机结合&#xff0c;隐藏对象的属性和实现细节&…

CXL论文阅读笔记整理(持续更新)

CXL 介绍 An Introduction to the Compute Express LinkTM (CXLTM) Interconnect arXiv Paper 对CXL技术进行介绍&#xff0c;包括CXL 1.0、CXL 2.0、CXL 3.0&#xff0c;对各规范的提升做介绍。整理了现有的CXL实现方法&#xff0c;延迟测试结果&#xff0c;对未来发展进行…

三分钟带你读懂面向对象的三大特征:封装,继承,多态

很多小伙伴在学面向对象的时候觉得非常抽象&#xff0c;尤其是对于面向对象的三大特征&#xff1a;封装&#xff0c;继承&#xff0c;多态不理解&#xff0c;那这期文章呢&#xff0c;九九就给大家安排&#xff0c;三分种带你迅速掌握封装&#xff0c;继承&#xff0c;多态。 …

17.基础乐理-调式、自然大调式(C大调、D大调。。。)

调式&#xff1a; 若干个音&#xff0c;按照某种规则排列起来&#xff0c;就是调式&#xff0c;调式是一个非常大&#xff0c;非常抽象的概念&#xff0c;调式这两个字是一个统称&#xff0c;当明确了 若干个音 到底有几个音&#xff0c;某种规则到底是什么规则之后&#xff0c…

刚拿到的《HarmonyOS应用开发者高级认证》,全网整理的题目,将近300题,100%通过

刚拿到《HarmonyOS应用开发者高级认证》&#xff0c;现在把题目和答案分享一下&#xff0c;这些题目是我根据其他网站整理的&#xff0c;宁滥勿缺&#xff0c;有个别题目是重复的&#xff0c;抽半天时间看一下&#xff0c;应该是稳过的。当然建议还是先跟着文档学一下鸿蒙或者看…

【UE5.1】使用MySQL and MariaDB Integration插件——(4)修改、插入、删除数据

目录 效果 步骤 一、修改 二、插入、删除 在上一篇博客&#xff08;【UE5.1】使用MySQL and MariaDB Integration插件——&#xff08;3&#xff09;表格形式显示数据&#xff09;基础上继续实现修改、插入和删除数据库数据的功能 效果 修改数据&#xff1a; 插入数据&…

【YOLO系列PR、F1绘图】更改v5、v7、v8(附v8训练、验证方式),实现调用val.py或者test.py后生成pr.csv,然后再整合绘制到一张图上(使用matplotlib绘制)

目录 1. 前提 效果图2. 更改步骤2.1 得到PR_curve.csv和F1_curve.csv2.1.1 YOLOv7的更改2.1.1.1 得到PR_curve.csv2.2.1.2 得到F1_curve.csv 2.1.2 YOLOv5的更改&#xff08;v6.1版本&#xff09;2.1.3 YOLOv8的更改&#xff08;附训练、验证方式&#xff09; 2.2 绘制PR曲线 …

在CSDN创作了6个月,我收获了什么?文末送书~

作者主页&#xff1a;阿玥的小东东主页&#xff01; 正在学习&#xff1a;python和C/C 期待大家的关注哦 目录 一次很好的机会&#xff0c;让我开始了CSDN之旅 首先来看看我的几位领路人 创作动力 1W粉丝 在CSDN我收获了什么&#xff1f; 很高的展现量 认证创作者身份 社…

Linux 网络操作命令FTP

FTP命令 引言 文件传输协议&#xff08;FTP&#xff09;是一种用于在网络上进行文件传输的协议。在Linux系统中&#xff0c;FTP可以作为一个非常有用的工具来上传、下载和管理文件。本文将介绍如何在Linux系统中安装FTP服务器&#xff0c;以及如何使用FTP客户端进行文件传输。…

RabbitMQ进阶学习

在之前的练习作业中&#xff0c;我们改造了余额支付功能&#xff0c;在支付成功后利用RabbitMQ通知交易服务&#xff0c;更新业务订单状态为已支付。 但是大家思考一下&#xff0c;如果这里MQ通知失败&#xff0c;支付服务中支付流水显示支付成功&#xff0c;而交易服务中的订…