开源java性能分析工具_Java性能监控:您应该知道的5个开源工具

开源java性能分析工具

鲜为人知但有用:开源应用程序性能监视的状态

对于任何应用程序来说,最重要的事情之一就是性能。 我们要确保用户获得他们能获得的最佳体验,并想知道我们的应用已启动并正在运行。 这就是为什么我们大多数人至少使用一种监视工具的原因。

如果您正在性能监控市场中寻找与众不同的东西,则可以选择一种开源工具。 在下面的文章中,我们收集了一些开源的APM工具,这些工具现在可以作为付费工具的替代品,因此您将能够看到它是否是您的正确选择。

开源

APM市场是一个拥挤的市场。 您拥有知名度很高的名字,例如New Relic,AppDynamics(请参阅此帖子以获取有关它们的概述),Dynatrace(我们在之前的帖子中进行过比较)以及一些较小的或鲜为人知的工具。 由于游戏中有很多玩家,而且他们都知道监视您的应用程序的价值,因此他们自己保留了代码。

但是,市场上还有另一种选择:开源工具。 如果您对一种简单的方法感兴趣,以便在生产中获得应用程序的可视性,并且想知道如何实际监视代码,则这些工具是一个不错的选择。

开源社区中也有一些关键的APM工具,每种工具都有其自己的产品和可能性。 如果您感兴趣,并且想确切地了解APM为您准备了什么开源产品,那么我们介绍了可用于您的前5种工具:

  • 舞台监控器
  • 查明
  • 莫斯基托
  • 焕根
  • 加蒙

1.

Stagemonitor提供了Java监视代理程序,该代理程序是在考虑群集应用程序堆栈的情况下构建的。 这意味着它旨在监视在多个服务器上运行的应用程序。 该工具与时间序列数据库(TSDB)集成。 该工具针对处理时间序列数据以及按时间索引的数字数组进行了优化。 这些数据库包括Elasticsearch,Graphite和InfluxDB。

建筑

舞台监视器拱

它是如何工作的?

Stagemonitor包含一个位于Java应用程序中的代理,可将度量和请求跟踪发送到中央数据库。 该工具只需要一个实例即可监视所有应用程序,实例和主机,并且可以在您自己的数据中心内部署。

在监视方面,您可以从群集或直接从开发人员服务器查看历史或实时数据,创建自定义警报并为每个指标定义阈值。
Stagemonitor包含一个仪表板,因此您可以可视化和分析您感兴趣的不同指标和请求。您可以创建自定义仪表板,编写自定义插件,甚至使用第三方插件。 它提供了一个不需要后端的浏览器内窗口小部件,该窗口小部件会自动注入到受监视的网页中。 您可以在以下链接中观看实时演示。

在官方文档中,Stagemonitor声明它也为非基于servlet的应用程序提供支持,您可以在此处查看全部要求 。

舞台监视器-1024x620

Stagemonitor的小部件指标

底线:如果您已经熟悉ELK堆栈,那么绝对值得一试快速测试。

2.

Pinpoint是专为大规模分布式系统设计的APM工具。 它以Google建立的分布式系统跟踪基础结构Dapper为模型,为开发人员提供了有关复杂分布式系统行为的更多信息。

建筑

精确拱门

它是如何工作的?

该工具通过跟踪分布式应用程序之间的事务来帮助分析系统的整体结构以及其中的组件如何互连。 这意味着它旨在说明如何执行每个事务,跟踪组件之间的流,并(提前开个玩笑)查明问题区域和潜在瓶颈。

仪表板有助于可视化组件的连接方式,并允许您实时监视应用程序内部的活动线程。 借助Pinpoint,您还可以查看请求计数和响应模式,从而能够识别潜在问题。 您可以查看关键细节,包括CPU使用率,内存/垃圾收集和JVM参数。

Pinpoint可以与已安装的代理一起工作,而无需更改任何代码,并且可以通过为每个组件运行四个简单脚本(包括Collector,Web,Sample TestApp和HBase)在自己的计算机上运行示例实例。

精确1024x629

Pinpoint的ServerMap

底线:如果您听说过Dapper,或者想监视和分析您的复杂分布式系统,则一定要检出此工具。

3.

MoSKito一站式提供3种工具:

  • MoSKito-Essential –基本的独立项目。 这是MoSKito功能的核心,可让您监视应用程序
  • MoSKito-Central –集中存储服务器,用于保存性能数据
  • MoSKito-Control –一种监视多节点Web应用程序性能的工具

它是如何工作的?

首先,您需要做的就是将.jar文件拖放到WEB-INF / lib文件夹中,或者在web.xml文件中添加一个小的新部分。 该工具启动并运行后,它将收集性能数据,对其进行实时分析以及将其存储以进行历史分析。

该工具收集所有性能指标,例如线程,内存,缓存,存储,服务,注册,付款,转换,SQL,负载分配等。 它不需要更改代码,支持所有主要的应用服务器(Tomcat,Jetty,JBoss,WebLogic),并将数据保存在本地。

您还将获得一个通知系统,以了解何时达到阈值以及要监视的用户操作的记录。 该工具与基于Web的仪表板一起,还提供了一个移动应用程序,可随时随地监视您的应用程序。

moskito-1024x406

MoSKito的必备

底线: MoSKito于2007年首次发布,现在它已成为众所周知且稳定的工具,受到团队和社区的支持,包括付费支持选项。 对于任何开源工具而言,这也是一个巨大的优势。

4.

Glowroot以快速,干净和简单的APM工具而自豪。 它将允许对缓慢的请求和错误进行跟踪捕获,并且您将能够记录每个用户操作的时间跟踪以及SQL捕获和聚合。 该工具还提供了具有可配置保留的所有数据的历史汇总。

它提供了图表以可视化响应时间细分和响应时间百分位数,其响应式UI允许您从移动设备以及桌面监视应用程序。

建筑

辉光根中央部署

Glowroot体系结构

它是如何工作的?

要开始使用Glowroot,您需要下载并解压缩主安装文件,并将-javaagent:path / to / glowroot.jar添加到应用程序的JVM参数中。 启动应用程序后,剩下的就是将浏览器指向http:// localhost:4000。

工具启动并运行后,您将获得连续的性能分析(带有过滤选项),并能够为响应时间百分位数和MBean属性设置警报。 Glowroot为跨多个线程的异步请求提供全面支持,并且支持Tomcat,TomEE,JBoss EAP,Wildfly,Jetty和Glassfish。

焕根

灼根的仪表板

底线:如果您想要的是简洁明了的产品,那么毫无疑问,您想要在这里查看其他工具的Glowroot。

5.

Kamon是一种React友好型工具箱,是为在JVM之上运行的应用程序而构建的。 更具体地说,它是为使用Typesafe Reactive Platform(使用Scala,Akka,Spray和/或Play!)构建的应用程序制作的,但仍提供对任何其他JVM平台和语言的支持。

建筑

kamon-300x2502x

它是如何工作的?

Kamon作为所有度量指标记录和跟踪操作API以及可选模块的核心模块进行分发,这些API为应用程序提供字节码检测和/或报告功能。 换句话说,它提供了一个简单的API,用于记录JVM应用程序的指标和跟踪信息。

Kamon的所有模块都可以通过Maven Central获得,您需要将它们添加为项目的编译依赖项。 包含了您感兴趣的模块后,只需启动Kamon,所有可用的模块将自动启动,您无需明确激活/启动它们。

跟踪模块将允许记录有关在应用程序中执行的功能的数据,而指标模块将允许您控制通过用户代码或其他Kamon模块提供的工具跟踪的实体的注册。 它还具有其他功能,例如过滤,配置仪器工厂和调度指标订阅。

底线:如果您使用多种JVM语言,或者主要是Scala / Akka,并且想要“一种工具来监视所有语言”,Kamon可能是最友好的选择。

现在您已经有了干草堆……

APM工具非常适合为您提供有关您的应用程序是否已启动并正在运行,或者是否有阻止它的信息。 唯一的问题是,一旦找到问题所在的大海捞针,就必须开始四处寻找导致问题的真正原因。

有一个更好的解决方案,而不是浏览日志文件以试图找出问题所在,发生的地方以及可能的原因,而是找到更好的解决方案。 OverOps不仅会为您提供何时何地的答案,还将向您显示错误发生的原因–在整个调用堆栈中为您提供导致错误的完整源代码和变量状态。 检查一下 。

最后的想法

这些是APM空间中付费工具的一些不错的选择。 但是……有些人可能认为采用开源选项主要是节省几美元的一种方法。 同样重要的是要记住,虽然您不需要开具使用该工具的发票,但这并不一定意味着它会更便宜。

开源工具需要付费:安装,故障排除以及维护,这些都将由您自己的工程师甚至您自己来完成。 更不用说您可能最终会浪费时间寻求对您遇到的特定问题的支持,而社区从未听说过。

我们的2美分是开源可能很棒,但是您还应该牢记其他成本,然后才能做出决定。

您认为我们应该检出其他开源APM工具吗? 在下面的评论中告诉我们有关它们的信息!

翻译自: https://www.javacodegeeks.com/2016/11/java-performance-monitoring-5-open-source-tools-know.html

开源java性能分析工具

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

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

相关文章

cmd编译可以通过执行没有结果_Go语言是如何完成编译的

Go语言是一门需要编译才能运行的编程语言,也就说代码在运行之前需要通过编译器生成二进制机器码,随后二进制文件才能在目标机器上运行,如果我们想要了解Go语言的实现原理,理解它的编译过程就是一个没有办法绕过的事情。预备知识想…

修改linux资源限制参数命令,linux passwd命令参数及用法详解--linux修改用户密码命令...

名称:passwd使用权限:所有使用者使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]说明:用来更改使用者的密码参数:-k keep non-expired authentication tokens-l 关闭账号密码。效果相当于rmod.html target…

如何通过postman测试需要登录授权的接口

思路 请求需要登录授权的接口,就意味着你要传token给接口,所以请求接口(要测试的接口)之前就要先获取token,因为登录成功后服务端才会返回token,而token又设置了时效,所以每次请求接口&#xf…

junit 静态方法_预期异常规则和模拟静态方法– JUnit

junit 静态方法今天,我被要求使用RESTful服务,所以我按照Robert Cecil Martin的TDD规则开始实施它,并遇到了一种测试预期异常以及错误消息的新方法(对我来说至少是这样),因此考虑共享我的实现方法作为这篇文…

wordpress linux 目录,快速搭建WordPress(Linux)

作者:彭济环境要求一、配置LAMP(LinuxApacheMysqlPHP)1、安装apachesudo apt-get install apache2 //安装apache2apache2 -v //查看版本网页访问本机ip地址,查看是否安装成功2、安装phpsudo apt-get install php //安装phpphp -v //查看版本sudo apt-get…

postman测试工具中的js代码中的sendRequest()使用详解

发送get请求 const url http://115.28.108.130:5000/api/user/getToken/?appid136425; // 发送get请求 pm.sendRequest(url, function (err, res) {console.log(err ? err : res.text()); // 控制台打印请求文本 });发送表单格式post请求 //构造一个登录请求 const login…

atheros蓝牙设备驱动 小米_小米Air 13笔记本黑苹果WiFi蓝牙硬件改装方案二

该方案适合小米笔记本Air 13初代,适合小米笔记本PRO等型号,适合通用的预留有M.2 PCIE通道SSD卡槽的电脑。也是作者极力推荐的终极改造方案。总体方案: 使用笔记本主板上的M.2 nvme通道 SSD硬盘接口进行拓展。使用BCM943602CS专用的M.2[NGFF]转接卡进行改…

将经过身份验证的用户注入Spring MVC @Controllers

可以使用AuthenticationPrincipal批注和AuthenticationPrincipalArgumentResolver这是Spring MVS MethodArgumentResolver的实现)将注入经过身份验证的用户注入Spring MVC处理程序方法。 默认情况下, AuthenticationPrincipalArgumentResolver已通过Web安…

Oracle数据库的命令工具sql*plus/sqlplus介绍

Oracle 的 sql*plus 是与 Oracle 数据库进行交互的客户端工具,借助 sql*plus 可以查看、修改数据库记录。在 sql*plus 中,可以运行sql*plus 命令与 SQL 语句。MySQL 中的 mysql、show、mysqldump 等命令就类似于 Oracle 的 sql*plus 客户端命令。 SQL 语…

python实现局域网攻击_通过python实现DNS欺骗

假设在一个的局域网内有两个人:Bob和Eve。Eve想让Bob访问他创建的恶意网页,这样她就可以通过隐藏性的下载给Bob的计算机上安装恶意软件,或者可能展示一个欺骗性的站点来试图窃取Bob的认证信息。(图片来自以上提供的链接&#xff0…

查询linux kafka安装目录,Kafka 1.0.0安装和配置--Linux篇

阅读目录:1. 关闭防火墙和Selinux2. 安装所需环境JDK,Zookeeper3. 下载Kafka 1.0.0版本4. 配置Kafka5. 启动Kafka并验证6. 报错及解决7. 说明1. 关闭防火墙和SelinuxLinux的防火墙是咱们新手的噩梦,很多情况会出现能ping通,但是访问不了Web页…

随机数生成java代码_Java Bullshifier –生成大量随机代码库

随机数生成java代码生成大量随机Java应用程序的命令行工具 您一直在等待的命令行工具。 或不。 毕竟,这是很深奥的。 无论哪种方式,它对某些人都非常有用,而对其他人来说却是一个有趣的实用程序。 Bullshifier是David Levanon和Hodaya Gamli…

背景区域为负样本什么意思_词向量-skipgram与负采样

大纲:1. onehot vs 分布式表示2. 分布式表示的全局泛化能力3. how to learn word2vec - intuition4. SkipGram5. SkipGram Negative Sampling6. 评估词向量7. CBOW与SkipGram对比1. onehot vs 分布式表示Onehot表示:V (apple, going, I, home, machine ,learing)ap…

嵌入式linux应用程序实例,嵌入式Linux应用程序访问物理地址的实例

前言  按照Linux分层驱动思想,外设驱动与主机控制器的驱动不相关,主机控制器的驱动不关心外设,而外设驱动也不关心主机,外设访问核心层的通用应用程序接口进行数据传输,主机和外设之间可以进行任意的组合。这样思想要…

生成验证码图片的Java代码

文章目录验证码演示代码请求资源路径为什么要添加一个随机数的参数验证码演示代码 package priv.lwx.javaex.servlet_demo.web.servlet.response;import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import …

线程同步 线程安全_同步装饰器来替换线程安全类

线程同步 线程安全您知道什么是线程安全吗? 如果没有,下面是一个简单的示例。 所有类都必须是线程安全的,对吗? 并不是的。 其中一些必须是线程安全的? 又错了。 我认为它们都不必是线程安全的,而它们都必须…

python数学要求_python数学工具之积分(1)

加载库Polygon,绘制积分图形。 fig, ax plt.subplots(figsize(7, 5))表示绘图尺寸为7*5;plt.plot(x, y, b, linewidth2)表示绘制蓝色线宽为2的函数图形;plt.ylim(ymin0)表示y轴最小值为0;Ix np.linspace(a, b)表示lx取值范围为[…

linux swap分区与内存,虚拟内存和swap分区的关系

首先,这两个概念分别对应windows和linux,即:windows:虚拟内存linux:swap分区windows即使物理内存没有用完也会去用到虚拟内存,而Linux不一样 Linux只有当物理内存用完的时候才会去动用虚拟内存(即swap分区)…

.net2.0 orm_Java 8:深入研究速度3.0.1“森林”流ORM

.net2.0 orm沿着这条路 我一直在为开源项目Speedment (它是Stream ORM Java工具包和运行时)做出贡献,并且刚刚发布了一个新的主要版本3.0.1“ Forest”。 版本的发布是以加利福尼亚帕洛阿尔托的大街小巷命名,大多数贡献者都在此工…

JavaScript/JS如何给元素对象添加事件

使用普通的 js 代码给元素对象添加事件 绑定事件,添加事件处理程序: var obj document.getElementById("name"); obj.onclick f1; function f1(){ alert("hello!"); }说明:函数名 f1 就是一个引用数据类型的变量&…