性能诊断工具对比+Prometheus(普罗米修斯)监控系统学习

【精选】Prometheus(普罗米修斯)监控系统_普罗米修斯监控_愿许浪尽天涯的博客-CSDN博客

Java 性能诊断工具 🏍️...

    • Java自带的工具
      • JConsole
      • JVisualVM
      • jmap
      • jstack
      • jcmd
    • 单机图形化诊断工具
      • YourKit
      • JProfiler
      • VisualVM
      • Arthas
    • 分布式诊断工具
      • Zipkin
      • Prometheus
      • SkyWalking
      • Pinpoint

Java 性能诊断工具, 从java自带的工具到单机图形化诊断工具再到分布式诊断工具

Java自带的工具

Java自带了许多诊断工具,例如JConsole、JVisualVM、jmap、jstack、jcmd等。这些工具都是非常常用的工具,它们可以帮助开发人员诊断Java应用程序的性能问题。其中,JConsole和JVisualVM是图形化工具,可以用来监控JVM的运行状态、查看内存和CPU使用情况等;而jmap、jstack和jcmd是命令行工具,可以用来诊断内存泄漏、死锁等问题。

JConsole

作用:JConsole是一个监视和管理Java应用程序的工具,可以监视JVM的运行状态、查看内存和CPU使用情况等。

优势:JConsole易于使用,可以通过图形化界面查看JVM的运行状态,快速了解应用程序的性能状况。

局限:JConsole只能监视本地JVM,无法监视远程JVM。

JVisualVM

作用:JVisualVM是一个多合一的Java应用程序监视和管理工具,可以通过它监视和管理本地和远程JVM。

优势:JVisualVM可以监视和管理本地和远程JVM,支持多种插件,可以实现更丰富的功能。

局限:JVisualVM可能会影响应用程序的性能,需要谨慎使用。

jmap

作用:jmap是一个命令行工具,可以用来查看Java堆的详细信息、生成堆转储文件等。

优势:jmap可以快速诊断内存泄漏问题,并生成堆转储文件以供分析。

局限:jmap需要停止应用程序才能生成堆转储文件,可能会影响应用程序的性能。

jstack

作用:jstack是一个命令行工具,可以用来查看Java线程的堆栈信息。

优势:jstack可以用来诊断死锁问题,并定位线程卡死的位置。

局限:jstack只能查看当前线程的堆栈信息,无法查看历史堆栈信息。

jcmd

作用:jcmd是一个命令行工具,可以用来诊断JVM,例如查看JVM的配置、线程信息、GC情况等。

优势:jcmd可以通过命令行对JVM进行诊断和管理。

局限:jcmd命令较多,需要熟悉其命令语法和使用方法。

单机图形化诊断工具

除了Java自带的工具之外,还有一些第三方的单机图形化诊断工具,例如YourKit、JProfiler、VisualVM等。这些工具提供了更为丰富的功能,例如内存泄漏检测、CPU分析、线程分析、堆转储等。它们可以帮助开发人员更快速地找到Java应用程序的性能瓶颈,并提供详细的分析报告和建议。

YourKit

作用:YourKit是一个用于Java和.NET应用程序的性能和内存分析器。

优势:YourKit提供了一些高级功能,例如内存泄漏检测、线程分析、CPU分析等。

局限:YourKit是商业软件,需要购买许可证才能使用。

JProfiler

作用:JProfiler是一个用于Java应用程序的性能分析器。

优势:JProfiler可以进行深入的性能分析,并提供了丰富的可视化报告和建议。

局限:JProfiler需要付费使用

VisualVM

作用:VisualVM是一个多合一的Java应用程序监视和管理工具,可以通过它监视和管理本地和远程JVM。

优势:VisualVM集成了许多常用的Java诊断工具,如JConsole、jmap、jstack等,同时还支持多种插件。

局限:VisualVM在监视远程JVM时需要手动安装插件,安装和配置比较繁琐。

Arthas

作用:一款基于Java Agent的分布式Java应用程序性能监测工具,主要用于实时诊断、代码追踪和性能分析等。

优势:

  • 实时性能监测:可以实时监测Java应用程序的CPU、内存、线程、GC等指标,帮助开发人员深入了解应用程序的性能状况。

  • 实时诊断:可以实时诊断Java应用程序的问题,并提供相应的解决方案,可以大大缩短问题定位和解决的时间。

  • 代码追踪:可以实时追踪Java应用程序的方法调用、参数、返回值等信息,帮助开发人员深入了解应用程序的执行过程。

  • 动态修改代码:可以在运行时动态地修改Java类的行为,帮助开发人员快速定位和解决问题。

  • 低侵入性:使用Arthas不需要修改Java应用程序的代码,只需要在启动时添加Java Agent即可。

局限:

  • 仅针对Java应用程序:Arthas只能监测Java应用程序的性能和瓶颈,对于其他类型的应用程序和系统无法监测。

  • 对系统资源的消耗:Arthas需要消耗一定的系统资源,包括CPU和内存等,因此在大规模集群中使用时需要考虑系统资源的消耗。

  • 局限于单机:Arthas是基于Java Agent的监测工具,只能监测单机的Java应用程序,无法监测分布式系统的性能和瓶颈。

分布式诊断工具

在分布式系统中,Java应用程序的性能问题通常更加复杂,因此需要使用专门的分布式诊断工具来解决问题。常见的分布式诊断工具包括Zipkin、SkyWalking、Pinpoint等。这些工具可以跟踪分布式应用程序的请求链路,帮助开发人员了解请求在系统中的流转情况,并分析各个节点的性能瓶颈。同时,这些工具也提供了可视化的界面,方便开发人员查看分布式应用程序的性能问题。

Zipkin

作用:Zipkin是一个分布式跟踪系统,可以追踪分布式应用程序的请求链路,并帮助开发人员定位性能问题。

优势:Zipkin可以追踪跨越多个系统的请求,帮助开发人员了解请求在系统中的流转情况,并分析各个节点的性能瓶颈。

局限:Zipkin需要在系统中部署服务端和客户端,部署和配置比较繁琐。

Prometheus

作用:一款分布式的时间序列数据监测工具,主要用于监测系统级别的指标,如CPU、内存、网络等,而不是针对具体的Java应用程序。

优势:

  • 分布式性能监测:可以监测整个分布式系统的性能和瓶颈,帮助开发人员深入了解整个系统的状态和性能。

  • 高度可扩展:Prometheus具有高度可扩展性,可以轻松添加新的监测指标和数据源,并支持水平扩展。

  • 强大的查询和分析功能:Prometheus提供了强大的查询语言和可视化工具,可以对监测数据进行分析和展示,帮助开发人员了解整个系统的状态和性能,发现性能瓶颈和问题。

  • 具有告警功能:Prometheus支持设置告警规则,一旦监测数据达到预设的阈值,可以及时发出告警信息,帮助开发人员快速定位问题。

局限:

  • 对监测指标有限制:Prometheus监测的指标必须是数值型数据,而且必须是可导出的,因此无法监测一些非数值型的数据。

  • 不支持完整的分布式跟踪:Prometheus可以通过客户端库监测分布式系统的指标,但并不支持完整的分布式跟踪,如分布式事务跟踪等。

  • 存储和查询的性能问题:随着监测数据的增加,Prometheus的存储和查询性能会受到影响,需要对存储和查询进行优化和扩展。

SkyWalking

作用:SkyWalking是一个分布式的应用程序性能监测系统,可以通过跟踪和监测分布式应用程序的请求链路,帮助开发人员了解系统的性能瓶颈。

优势:SkyWalking支持多种语言,能够跟踪分布式应用程序的请求链路,并提供详细的分析报告和建议。

局限:SkyWalking需要在系统中部署服务端和客户端,部署和配置比较繁琐。

Pinpoint

作用:Pinpoint是一个分布式应用程序性能监测系统,可以跟踪分布式应用程序的请求链路,帮助开发人员定位性能问题。

优势:Pinpoint支持多种语言,提供了丰富的功能,包括方法级别的性能监测、线程分析、内存泄漏检测等。

局限:Pinpoint需要在系统中部署服务端和客户端,部署和配置比较繁琐。同时,Pinpoint的日志会占用较多磁盘空间,需要注意清理日志文件。

综上所述,Java性能诊断工具的选择取决于应用程序的类型和性能问题的类型。对于小型应用程序,Java自带的工具已经足够;对于大型应用程序和分布式系统,第三方工具和分布式诊断工具则更为适合。

原博客:Java 性能诊断工具你好_java诊断工具_洪宏鸿的博客-CSDN博客

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

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

相关文章

Jenkins发布windows服务器jar

一、背景 之前是linux服务器部署的项目,现在转为windows服务器部署。jenkins和git都已经部署好了。所以本文只会重点讲Jenkins调用windows服务器bat命令及bat命令的编写概况。 二、详情操作 1、Jenkins调用windows bat文件 首先在Jenkins项目配置"高级项目选…

【git命令】删除分支

1. 删除本地分支 使用git branch -d命令删除本地分支 git branch -d branch_name其中,branch_name是分支名。如果有未合并的更改,Git会阻止你删除分支。 使用git branch -D命令强制删除本地分支 git branch -D branch_name这个命令会强制删除分支&am…

JAVA排序

目录 再看各种排序前我们先了解一下什么叫 稳定性 插入排序: 希尔排序:(插入排序的优化) 测试插入排序和希尔排序(插入排序的优化)排序时间对比 选择排序: 选择排序的优化: 正确的 选择排序优化 快速排序(挖坑法:未优化) 快速排序的优化1 快速排序优化2 优化快速排序…

mysql4

创建表并插入数据: 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 primary key name VARCHAR(50) 否 否 是 否 否 not null glass VARCHAR(50) 否 否 是 否 否 not nullsch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun …

3.无重复字符的最长子串

​题目来源: leetcode题目,网址:3. 无重复字符的最长子串 - 力扣(LeetCode) 解题思路: 滑动窗口。使用哈希集合来记录窗口中的字符。当窗口右边界不为字符串右边界时,窗口右边界右移一位&#…

小型k8s

参考: 用于本地实验的小型 Kubernetes:k0s、MicroK8s、kind、k3s 和 Minikube - 知乎 https://www.cnblogs.com/jesse123/p/15559614.html K3s vs K8s:轻量级和全功能的对决_运行_部署_容器

server2012 通过防火墙开启局域网内限定IP进行远程桌面连接

我这里需要被远程桌面的电脑系统版本为windows server2012 1、打开允许远程连接设置 2、开启防火墙 3、设置允许“远程桌面应用”通过防火墙 勾选”远程桌面“ 3、入站规则设置 高级设置→入站规则→远程桌面-用户模式(TCP-In) 进入远程桌面属性的作用域——>远程IP地址—…

实体店做商城小程序如何

互联网电商深入各个行业,传统线下店商家无论产品销售还是服务业,仅靠以往的经营模式,很难拓展到客户,老客流失严重,同时渠道单一,无法实现外地客户购物及线上客户赋能等。 入驻第三方平台有优势但也有不足…

聊聊springboot的TomcatMetricsBinder

序 本文主要研究一下springboot的TomcatMetricsBinder TomcatMetricsAutoConfiguration org/springframework/boot/actuate/autoconfigure/metrics/web/tomcat/TomcatMetricsAutoConfiguration.java Configuration(proxyBeanMethods false) ConditionalOnWebApplication C…

pinia全局状态管理

使用:结合vue2、vue3使用 优点:相比vuex:提供组合式和选项式的写法,支持ts类型推断,提供更简洁的状态管理(去除mutation) 注意点: (1)使用store时不要结构&am…

Spring Web MVC入门

一:了解Spring Web MVC (1)关于Java开发 🌟Java开发大多数场景是业务开发 比如说京东的业务就是电商卖货、今日头条的业务就推送新闻;快手的业务就是短视频推荐 (2)Spring Web MVC的简单理解 💗Spring Web MVC:如何使…

分布估计算法(Estimation of distribution algorithm,EDA)

概论 分布估计算法(Estimation of distribution algorithm,EDA)是一种新兴的基于统计学原理的随机优化算法。 为什么要叫这个名字呢? 首先,“分布”指的就是概率分布。 其次,“估计”指的是这个概率分布…

通过requests库使用HTTP编写的爬虫程序

使用Python的requests库可以方便地编写HTTP爬虫程序。以下是一个使用requests库的示例: import requests# 发送HTTP GET请求 response requests.get("http://example.com")# 检查响应状态码 if response.status_code 200:# 获取响应内容html response.…

Crawler4j实例爬取爱奇艺热播剧案例

前言 热播剧数据在戏剧娱乐产业中扮演着着名的角色。热了解播剧的观众喜好和趋势,对于制作方和广告商来说都具有重要的参考价值。然而,手动收集和整理这些数据是在本文中,我们将介绍如何利用 Python 爬虫技术和 Crawler4j 实例来自动化爬取爱…

对硬件编程的一点理解---vitis使用

硬件的核心是并行编程,它主要包括两大部分:多流水并行、流水内部打拍。 1 多流水并行编程是在硬件内部形成多条流水,和cpu多个核心 类似,但是数量可以远远超过cpu核数,一般实现方案有两种:fifo和ram 1) f…

Docker实战之二

一、前言 前一篇 Docker实战之一 我们介绍了Dokcer 镜像和容器基本概念,这一节我们来具体制作一个镜像文件并进行快速部署,这个镜像文件是我们的测试环境,主要包含JDK1.8、Nginx、Git、Node、Gradle,基础镜像为CentOS&#xff0c…

并查集学习心得

int find(int x)//并查集找父亲 {if(x!fa[x]) fa[x]find(fa[x]);return fa[x]; } void add(int x,int y)//合并 {int fxfind(x);int fyfind(y);if(x!y) fa[fx]fy; } P1197 [JSOI2008] 星球大战 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 洛谷p1197星球大战 :并查集逆向…

Java练习题2020-3

统计从1到N的整数中,所有立方值的平方根为整数的数的个数 输入说明&#xff1a;整数 N(N<10000)&#xff1b; 输出说明&#xff1a;符合条件的数的个数&#xff0c;如4^3648^2 输入样例&#xff1a;10 输出样例&#xff1a;3 (说明&#xff1a;样例中符合条件的3个数是1、4、…

用低代码平台代替Excel搭建进销存管理系统

目录 一、用低代码平台搭建系统 1.需求调研 2.基于痛点梳理业务流程 3.低代码实现 &#xff08;1&#xff09;基础资料模块 &#xff08;2&#xff09;采购管理模块 &#xff08;3&#xff09;销售管理模块 &#xff08;4&#xff09;库存管理模块 &#xff08;5&…

【点云】有序/无序点云区别(详细详解)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…