JVM-Arthas高效的监控工具

news2024/12/23 10:22:48

一、arthas介绍

3.选择监控哪个进程

4.进入具体进程

二、arthas的基础命令与基本操作

1.查询包含Java的系统属性:

命令:sysprop |grep java

1.查询不含Java的系统属性:

命令:sysprop | grep -v java

3.打印历史命令

命令:history

4.查看当前工作目录

命令:pwd

三、如何使用arthas监控线上服务的内存状态

1.dashboard - 当前系统的实时数据面板

命令:dashboard -i 100    100毫秒刷新一次

命令:dashboard -n 2 刷新两次

命令:dashboard -n 2 -i 1000 每1秒刷新一次共刷新两次

2.thread - 查看当前线程信息,查看线程的堆栈

支持一键展示当前最忙的前N个线程并打印堆栈

命令:thread -n 3

当没有参数时,显示第一页线程的信息

命令:thread

显示指定线程的运行堆栈

命令:thread id

查看阻塞的线程

命令:thread -b

3.heapdump - dump java heap, 类似 jmap 命令的 heap dump 功能.

dump 到指定文件

命令:heapdump arthas-output/dump.hprof

4.jvm - 查看当前JVM信息

命令: jvm

5.memory - 查看JVM内存信息

命令:memory

六、如何使用arthas监控载入的类信息screenflow

1.classloader - 查看classloader的继承树、urls、类加载信息

命令:classloader

大白话:

        系统使用的类加载器种类,每种加载器创建实例数量(numberOfInstances)、加载类数量(loadedCountTotal)

2.jad - 反编译指定已加载类的源码,这个命令就可以检查线上的类是不是最新的代码

命令:jad java.lang.String

解释:

        代码是反编译出来的,可能有些代码的位置会有所变化。

3.sc - 查看JVM已加载的类信息,还具备搜索功能

搜索java.lang包下的类

命令:sc java.lang.*

搜索所有包下的MathGame类

命令: sc *.MathGame

搜索所有包下的MathGame类并且查看类的信息

命令: sc -d *.MathGame

大白话:

        -d 类的信息

        -f 类方法的信息

4.sm - 查看已加载类的方法信息

查看java.lang.String的方法信息

命令: sm java.lang.String

五、如何使用arthas追踪方法的执行情况screenflow

1.monitor - 方法执行监控

命令:monitor -c 5 demo.MathGame primeFactors

2.watch - 函数执行数据观测

观测demo包下MathGame类的primeFactors方法,-x 输出结果的属性遍历深度

1 - 第一级别,显示入参、出参的类型

命令:watch demo.MathGame primeFactors -x 1

2 - 第二级别,显示入参、出参的具体数据

命令:watch demo.MathGame primeFactors -x 2

3 - 第三级别,显示方法值的具体数据更加详细

命令:watch demo.MathGame primeFactors -x 3

4 - 第四级别,显示方法值的具体数据更加详细,更底层,一般用不到

命令:watch demo.MathGame primeFactors -x 4

[b] -在函数调用之前观测

命令:watch demo.MathGame primeFactors -x 2 -b

[s] -在函数调用之前观测

命令:watch demo.MathGame primeFactors -x 2  -s

注:目前watch命令好像不能同时既看入参也看出参,即不能同时使用-b和-s命令,只会显示一个出参或入参。

仅观测函数调用入库的参数和返回值

命令:watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b

总结,arthas的命令很多,此处仅讲了一些常用的,其他具体需要看帮助手册。

六、绘制火焰图

启动profiler

命令:profiler start

获取已采集的sample的数量

命令:profiler getSamples

停止profiler

命令:profiler stop --format html

默认情况下,arthas 使用 3658 端口,则可以打开: http://localhost:3658/arthas-output/在新窗口打开 查看到arthas-output目录下面的 profiler 结果:

命令:http://localhost:3658/arthas-output/

还有一种打开方式,进入html的存放目录,直接打开。

怎么看有没有问题呢,看一张死锁的火焰图

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排序算法之八:计数排序

1.计数排序思想 计数排序,顾名思义就是计算数据的个数 计数排序又称非比较排序 思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤: 统计相同元素出现次数 根据统计的结果将序列回收到原来的序列中 计数…

20240115如何在线识别俄语字幕?

20240115如何在线识别俄语字幕? 2024/1/15 21:25 百度搜索:俄罗斯语 音频 在线识别 字幕 Bilibili:俄语AI字幕识别 音视频转文字 字幕小工具V1.2 BING:音视频转文字 字幕小工具V1.2 https://www.bilibili.com/video/BV1d34y1F7…

嵌入式软件工程师面试题——2025校招社招通用(十八)

说明: 面试群,群号: 228447240面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但…

sqli-labs关卡23(基于get提交的过滤注释符的联合注入)

文章目录 前言一、回顾前几关知识点二、靶场第二十三关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去…

SQL-用户管理与用户权限

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用 1 JupyterLab 介绍2 安装2.1 Jupyter Kernel 与 conda 虚拟环境 3 使用3.1 安装中文语言包(Optional)3.2 启动3.3 常用快捷键3.3.1 命令模式下 3.4 远程访问个人计算机3.4.1 局域网下 1 JupyterLab 介绍 官方文档: …

鸿蒙开发笔记(一):ArkTS概述及声明式UI的使用

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。 ArkTS在TS的基础上主要扩展了如下能力: 基本语法:ArkTS定义…

给 Linux 主机添加 SSH 双因子认证

GitHub:https://github.com/google/google-authenticator-android 在信息时代,服务器安全愈发成为首要任务。Linux 主机通过 ssh 方式连接,当存在弱密码的情况下,通过暴力破解的方式会很容易就被攻破了,本文将向你展示…

一文搞懂系列——Linux C线程池技术

背景 最近在走读诊断项目代码时,发现其用到了线程池技术,感觉耳目一新。以前基本只是听过线程池,但是并没有实际应用。对它有一丝的好奇,于是趁这个机会深入了解一下线程池的实现原理。 线程池的优点 线程池出现的背景&#xf…

Lede(OpenWrt)安装和双宽带叠加

文章目录 一、Lede介绍1. 简介2. 相关网站 二、Lede安装1. 编译环境2. SHELL编译步骤3. 腾讯云自动化助手 三、Lede配置1. 电信接口配置2. 联通接口配置3. 多线多播配置4. 网速测试效果 一、Lede介绍 1. 简介 LEDE是一个专为路由器和嵌入式设备设计的自由和开源的操作系统。 …

HTML--JavaScript--引入方式

啊哈~~~基础三剑看到第三剑,JavaScript HTML用于控制网页结构 CSS用于控制网页的外观 JavaScript用于控制网页的行为 JavaScript引入方式 引入的三种方式: 外部JavaScript 内部JavaScript 元素事件JavaScript 引入外部JavaScript 一般情况下网页最好…

【动态规划】19子数组系列_最大子数组和_C++(medium)

题目链接:leetcode最大子数组和 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们找出一个具有最大和的连续子数组,返回其最大和。 算法原理: 1.状态表示…

城市信息模型平台顶层设计与实践-CIM-读书笔记

城市信息模型平台顶层设计与实践-CIM-读书笔记 1、地理空间框架 GB/T 30317—2013《地理空间框架基本规定》规定地理空间框架为:“地理信息数据及其采集、加工、交换、服务所涉及的政策、法规、标准、技术、设施、机制和人力资源的总称,由基础地理信息…

显示文件前后内容 (来get小命令 tr 、 cut……)

一、 命令 tr -------基本功能转换 tr:对文件字符进行处理 格式 tr [选项]... SET1 [SET2] SET 是一组字符串,一般都可按照字面含义理解 -d 删除 -s 压缩 -c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。 tr 1 a 出现…

【LeetCode】206. 反转链表(简单)——代码随想录算法训练营Day03

题目链接:206. 反转链表 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输…

今天吃什么小游戏(基于Flask框架搭建的简单应用程序,用于随机选择午餐选项。代码分为两部分:Python部分和HTML模板部分)

今天吃什么 一个简单有趣的外卖点饭网站,不知道吃什么的时候,都可以用它自动决定你要吃的,包括各种烧烤、火锅、螺蛳粉、刀削面、小笼包、麦当劳等午餐全部都在内。点击开始它会随意调出不同的午餐,点击停止就会挑选一个你准备要吃…

数据结构学习 jz53_1 在排序数组中查找数字1 0 ~ n - 1 中缺失的数字

关键词:查找算法 二分法 映射 位运算 题目一:统计目标成绩的出现次数 方法一:我自己写的。[ 用时: 13 m 3 s ] 二分法线性扫描 方法二:看了题解 方法一: 二分法线性查找 思路: 先二分查找找到和targe…

如何购买腾讯云服务器?图文教程超详细

腾讯云服务器购买流程很简单,有两种购买方式,直接在官方活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动…

在windows11系统上利用docker搭建ubuntu记录

我的windows11系统上,之前已经安装好了window版本的docker,没有安装的小伙伴需要去安装一下。 下面直接记录安装linux的步骤: 一、创建linux容器 1、拉取镜像 docker pull ubuntu 2、查看镜像 docker images 3、创建容器 docker run --…

Jmeter 测试脚本录制器-HTTP 代理服务器

Jmeter 测试脚本录制器-HTTP 代理服务器 Jmeter 配置代理服务器代理服务器获取请求地址示例图配置步骤 浏览器配置代理Google 浏览器插件配置代理windows 本地网络配置代理 启动录制,生成证书生成证书导入证书Jmeter 配置证书 浏览器点击页面,录制请求地…