最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

UAVStack 功能上新:新增 JVM 监控分析工具

  • 2020-02-06
  • 本文字数:2066 字

    阅读完需:约 7 分钟

UAVStack功能上新:新增JVM监控分析工具

引言

作为 AllInOne 的智能化服务技术栈,UAVStack 提供了非常全面的监控数据采样功能,同时支持数据监控与预警。近期,我们整合了原有的数据采集展示功能,新增 JVM 分析功能,推出了更易用的 JVM 监控分析工具。


熟悉 JDK 的开发者都知道,JDK 本身提供了一套 JVM 分析工具,包括 jinfo、jmap、jstack 等。用户可以通过命令行轻松获取 JVM 内存堆栈信息、内存对象分配以及 JVM 启动基本参数信息。但这些工具需要在命令行环境中执行,且生产环境下则需要通过堡垒机转发。


开源社区一些不错的 JVM 分析工具也可以提供获取 JVM 基本信息、追踪堆栈、获取内存信息等功能,但同样需要命令行 CLI 的支持。


UAVStack 推出的 JVM 监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供 JVM 基本参数获取、内存 dump、线程分析、内存分配采样和热点方法分析等功能。

一、架构

JVM 监控分析工具基于 UAVStack 既有架构,整体分为前端、后台及中间件增强框架(MOF)。其中:


  • 前端负责展示数据、向后台发送用户执行指令;

  • 后台负责下发指令、响应用户查询、处理采集到的数据;

  • 中间件增强框架(MOF)负责接收后台下发的指令、执行指令并返回数据或将数据写入文件,然后通过 UAV 提供的文件归集功能上送数据。


整体架构流程如下图所示:


1571038341144063667.jpeg

二、关键技术

2.1 JMX

JMX 提供相关接口,获取基础的 JVM 监控数据,如内存堆大小、GC 情况等,是 JVM 监控数据的基础。

2.2 中间件增强框架(MOF)

作为分析工具整条链路的基础,MOF 依附于用户应用,主要提供以下基础支持:


  • 基础数据采集:MOF 植入应用中,JMX 定期获取并上报相关 JVM 的基本信息数据,为展示和预警提供数据基础。

  • 请求捕获、指令执行:JVM 监控分析工具的大多数功能都需要下发指令至应用所在的服务器。MOF 负责把下发指令的请求拦截下来,执行并返回对应的结果。

2.3 Java Attach API

Java Attach API 是由 Sun 提供的一套非标准 API,可以将用户连接到运行中的虚拟机进程上,进行 agent 的挂载等操作。


在 JVM 监控分析工具中,Java Attach API 主要用于 Attach 到虚拟机进程,进行如下操作:


  • 获取 JMX Connection:从外部获取 JVMConnection,得到 MXBean,抓取运行数据。(CPU 采样分析)

  • 获取 VirtualMachine 对象:调用接口,得到堆内存分布信息。(内存采样分析)

三、功能展示

3.1 基本监控

选择应用实例后即可进入基本监控页面。


该页面主要展示 CPU 使用率、线程情况、内存占用和 GC 情况。用户可以根据需求调整时间范围,查看不同时段的监控数据。


1571038365334066717.jpeg

3.2 JVM 摘要

JVM 摘要页面显示当前虚拟机的基本参数信息,包括基本信息、JVM 参数和系统属性。其中:


  • 基本信息包括 pid、主机信息、启动参数以及 JVM 的启动时间等最基本、最重要的信息;

  • JVM 参数包括所有 JVM 启动参数,用户可查看指定的堆大小、垃圾回收器信息等;

  • 系统属性包括写入 System.Properties 中的所有配置信息以及 Javaagent 的配置属性。

1571038383794089716.jpeg

3.3 线程分析

线程分析通过执行 jstack 获取线程基本信息,并对输出结果进行分析,得到线程状态数量、有无死锁等信息。


1571038397964069401.jpeg

3.4 内存 Dump

内存 Dump 通过执行 jmap 获取指定 JVM 的堆栈 dump 文件。


用户可以便捷地在前端一键生成 dump,不需要再登录堡垒机。点击“刷新”可以查看近期 dump 内存的操作记录。


1571038415344045959.jpeg

3.5 CPU 分析

CPU 分析是基于线程栈的采样分析,主要提供两个功能:线程执行时间以及方法热点采样。


  • 线程执行时间是指线程在采样期间的活动时间。查询结果按照线程活动总时间排序,同时提供线程名称和线程执行时间信息,用户可据此判断应用的执行情况。


1571038433124008099.jpeg


  • 方法热点采样统计所有方法的执行时间,提供方法的类名和方法名信息。其中,方法的自用执行时间不包括方法调用其他方法的执行时间。查询结果按照方法的自用执行时间降序排序,用户可以查看当前应用内部耗时较长的执行方法,判断应用是否异常、是否需要优化。

1571038442575082239.jpeg

3.6 内存分析

内存分析是基于线程以及堆的统计采样分析,主要提供两个功能:每个线程的内存分配和堆内分配细节。


  • 线程内存分配提供每个线程的内存分配大小和线程名称等信息,按照内存分配大小降序排列。用户可查看当前占用内存较大的线程。


1571038457865043418.jpeg


  • 堆内分配提供了各个类在堆内的分配实例数以及所占用的堆内存,按照堆内存大小降序排列。用户可把该功能当作简易的 dump 及分析工具,快速分析内存分配情况,发现内存分配问题。

  • 1571038476165072687.jpeg

总结

JVM 监控分析工具是从监控、分析到展示的一体化工具。JDK 自带的工具虽然也可以实现除 CPU 分析之外的其他功能,但不够便捷,也无法实现从采样、分析到图形化展示的一体化效果。JVM 监控分析工具解决了开发人员没有线上应用堡垒机权限、无法分析采集到的数据等痛点,同时提供 CPU 与内存采样分析等功能,以较低的性能开销获取较为全面的 JVM 运行数据,帮助应用开发人员发现与分析问题,为应用开发优化提供参考依据。


UAVStack 已在 Github 上开放源码,并提供了安装部署、架构说明和用户指南等双语文档。


官方网站:https://uavorg.github.io/main/


开源地址:https://github.com/uavorg


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/307


2020-02-06 21:28660

评论

发布
暂无评论
发现更多内容

TypeScript 与 JavaScript:你应该知道的区别

京东科技开发者

JavaScript typescript 前端 后端 企业号 3 月 PK 榜

R-Drop论文复现与理论讲解

华为云开发者联盟

人工智能 华为云 深度神经网络 华为云开发者联盟 企业号 3 月 PK 榜

适用于 Apple Silicon (M1芯片)的 Photoshop常见问题及解决方案

魔仙苹果mac堡

PhotoShop PS常见问题

数据测试实践:从一个bug开始的大数据引擎兼容性探索

京东科技开发者

大数据 bug修复 引擎 测试数据构造 企业号 3 月 PK 榜

精选案例 | 博睿数据30w+监测节点护航新华网、人民网两会重保工作

博睿数据

可观测性 智能运维 博睿数据 精选案例 主动式拨测

ins视频保姆级图文教程,快学起来!

frank

探索以小程序提升运维效率

Onegun

运维 小程序容器

Dubbo Triple 协议

昵称不能为null

dubbo RPC triple协议

Higress on K8s 5分钟开箱即用

阿里巴巴中间件

阿里云 云原生 Higress

融云入选中国信通院《高质量数字化转型产品及服务全景图》

融云 RongCloud

产品 数字化 通讯

MMMBSC互助基金系统开发智能合约部署

薇電13242772558

智能合约 dapp

小程序技术如何提升企业的移动研发效率?

FinFish

降本增效 小程序容器 移动研发 小程序技术

你代码的异味是故意的还是不小心?是故意的!

禅道项目管理

取得成功的 13 个方法

宇宙之一粟

个人成长 翻译 成功

秒懂算法 | 搜索基础

TiAmo

DFS BFS 搜索算法

瓴羊Quick BI:“3端4表4擎、3+NPlus”得到众多行业内部人士的认可!

对不起该用户已成仙‖

京东云RASP云原生安全免疫创新实践

京东科技开发者

Web 安全 漏洞 业务安全 企业号 3 月 PK 榜

FDF循环互助游戏系统开发智能合约搭建

薇電13242772558

智能合约

动转静两大升级!一键转静成功率领先,重点模型训练提速18%+

飞桨PaddlePaddle

人工智能 百度 飞桨 PaddlePaddle 框架解析

搬得进来,搬得出去!快来过一把数据迁移的“瘾”

OceanBase 数据库

数据库 oceanbase

React等前端框架如何与小程序结合

Onegun

前端 前端框架 React Vue 3

聊聊线上发布这件事

老张

软件测试 权限管理 服务部署

云智慧助力中国信通院组装式应用开发平台系列标准建设

云智慧AIOps社区

M1电脑运行Windows10弹出“内部版本已过期”的解决方法

Rose

pd虚拟机 M1电脑 Windows内部版本已经过期

Vineyard 论文被 SIGMOD'2023 接收,助力计算引擎之间高效数据交换

阿里巴巴中间件

阿里云 计算引擎

探索 Pixelmator Pro 3新功能——AI智能模板

Rose

Pixelmator Pro Mac修图软件

用户分享 | 达梦第三方客户端DockQuery使用体会

BinTools图尔兹

数据库 用户体验 国产数据库工具

OceanBase 生态产品:时序数据库CeresDB 正式发布 1.0 版本

OceanBase 数据库

数据库 oceanbase

技术沙龙 | 探索软件测试前沿技术及最佳实践,体验ChatGPT在测试领域中的应用

测试人

软件测试 沙龙 ChatGPT

解决mac电脑打开应用“意外退出”的问题 (点按“重新打开”以再次打开应用程序)

魔仙苹果mac堡

PHPStorm 意外退出 mac电脑

跨端技术或许是提升软件运维效率的利器

FinFish

小程序化 小程序技术 高效运维 软件运维

UAVStack功能上新:新增JVM监控分析工具_语言 & 开发_张明明_InfoQ精选文章