当今的许多 Java 应用程序都依赖于一组复杂的分布式依赖关系和移动部件。很多外部因素都可能对应用程序的性能和可用性造成影响。这些影响基本上都无法完全消除或解决,且难以在预生成环境中准确模拟。Stuff happens。但是,您可以创建并维护一个全面的系统来监控应用程序的整个生态系统,从而显著降低这些事件的严重性和持续时间。
本系列文章给出了实现此类系统的一些模式和技巧。模式,以及我将使用的一些术语,都表示泛指。通过结合示例代码和插图,它们将帮助您理解应用程序性能监控的概念。这种理解强调解决方案的必要性,并能帮助您选择商业或开源的解决方案。您可以扩展和定制一个解决方案,或者根据需要将其作为设计解决方案的蓝图。
第 2 部分将重点介绍插装 Java 类及资源而无需修改原始源代码的方法。第 3 部分将论述监控 JVM 外部资源的方法,包括主机及其以及和消息传递系统等远程服务。它还将总结并归纳的 APM 问题,如数据管理、数据虚拟化、报告和报警。
APM系统:模式和反面模式
为让大家正确入门,应当强调,虽然此处介绍的多数与 Java 相关的内容看上去与应用程序和代码性能分析的流程类似,但其实并非如此。性能分析是一个极具价值的生产前流程,它可以确认您的 Java 代码是否可扩展、高效、快速和足够出色。但是,根据stuff
happens公理,当您在生产中遇到无法说明的问题时,优秀的开发阶段代码性能分析可能无用武之地。
我的意思是,在生产中实现性能分析的一些方面,并从运行中的应用程序收集一些相同的实时数据及其所有外部依赖关系。该数据由一系列遍及目标的定量测量指标组成,它们为整个系统的健康状况提供细粒度和详细的表示。此外,通过保留这些指标的历史库,您可以捕获准确的基线,以帮助您确认环境仍然健康,或查明特定缺陷的根源和规模。
完全没有监控资源的应用程序微乎其微,但仍然需要考虑这些反面模式,它们经常出现在运行环境中:
图 1 对比了孤立和整合的 APM 系统:
图 positeType 等复杂类型,这些类型可以被分解为相同简单类型的键/值对。简单类型的完整列表枚举在静态
图 12 显示添加了阀值指标的薪水处理的指标树:
图 12. 添加了阀值的薪水处理指标
图 13 演示了哪些收集的数据可以表示在饼形图中:
确保查找上下文和阀值分类的效率和速度非常重要,因为它
们在完成实际工作的线程中执行。在 ITracer 实现中,所有指标名称在第一次被跟踪程序发现时,将存储在(线程安全)为具备和不具备阀值的指标指定的映射中。当特定指标的跟踪事件发生后,阀值确定过程占用的时间是一个 Map 查找时间,它的速度通常足够快。如果阀值条目或指标名称的数量非常大,则一种合理的解决方案是推迟阀值确定,并在异步跟踪线程池中处理它们。
图 9 演示了一个简单的插装截取程序,它通过捕获调用的起始时间来测量它的运行时间,然后将测量数据(运行时间和指标复合名称)分发给处理队列。然后,线程池读取该队列,获取测量数据并完成跟踪流程。
身份认证 购VIP最低享 7
领优惠券(最高得80元)
解决java环境变量配置好后双击jar文件却无法运行的办法
浏览器无法运行JAVA脚本的解决方法
1、浏览器无法运行JAVA脚本的解决方法。
本文主要分享了js中开关变量使用实例的代码,具有很好的参考价值,下面跟着小编一起来看下吧
下面小编就为大家带来一篇JavaScript必看小技巧(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这篇文章主要为大家详细介绍了javaScript日期工具类的汇总,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
目前很多网站,在图片加载时均采用了一种名为懒加载的方式,具体表现为,当页面被请求时,只加载可视区域的图片,其它部分的图片则不加载,只有这些图片出现在可视区域时才会动态加载这些图片,下面本文就介绍了JS图片懒加载(可视区域加载)的实现方法,一起来看看吧。