通过应用程序性能管理升级您的监控
APM入门
应用程序性能管理(APM)是对软件应用程序的可用性和性能的监视和管理。 不同的人对这个定义的理解不同,因此本文试图确定什么是APM,它包括什么以及为什么它对您的业务很重要。
如果要控制应用程序的性能,那么重要的是要了解您要衡量的内容以及如何在业务环境中解释它。
什么是应用程序性能管理(APM)?
随着应用程序从独立应用程序发展到客户端-服务器应用程序再到分布式应用程序,最终发展到基于云的弹性应用程序,应用程序性能管理也随之发展。
当我们提到APM时,是指管理应用程序的性能,以便我们可以确定它们何时正常运行以及何时异常运行。 此外,当有人出错并且应用程序行为异常时,我们需要Swift找出问题的根本原因,以便我们进行补救。
我们可能会观察到如下情况:
—在其上运行应用程序的物理硬件
—在其中运行应用程序的虚拟机
—托管应用程序环境的JVM —在其中运行应用程序的容器(应用程序服务器或Web容器) —应用程序本身的行为 —支持基础结构,例如网络通信,数据库,缓存,外部Web服务和旧系统
一旦我们从所有这些来源获取了绩效指标,就需要对它们对业务交易的影响进行解释和关联。 这就是APM真正发挥作用的地方。APM供应商聘请了不同技术的专家,以便他们可以深入了解每个单独系统中的性能指标,然后将这些指标汇总到您的应用程序的整体视图中。
下一步是从构成正常性的角度来分析您的应用程序性能的整体视图。 最后,根据您的应用程序和部署环境,您可以告诉APM解决方案执行某些操作来自动修复问题。
有兴趣阅读整篇名为“ Java 5最佳性能指标,技巧和窍门”的全文吗? 在这里下载!
APM为什么重要?
在您看来,APM很重要,但是您可能需要向想要知道为什么她必须为此支付费用的人(例如老板或公司的CFO)回答APM重要性的问题。 为了证明APM的重要性,让我们考虑采用APM解决方案的替代方案,并评估解决方案工作量和停机时间所带来的影响。
综合事务是您对应用程序执行并用来衡量性能的事务。 根据您应用程序的复杂性,构建调用服务并验证响应的小程序并不困难。
下一个选项是手动检测应用程序,这意味着您可以将性能监视代码直接添加到应用程序中,并将其记录在数据库或文件系统等位置。 手动检测的一些挑战包括:我检测代码的哪些部分,如何对其进行分析,如何确定正常性,如何将这些问题传播给他人进行分析,哪些上下文信息很重要等等。
还有其他技术选择,但我最常发现的是,当其自定义服务组织收到用户的投诉时,公司会收到有关性能问题的警报。 我认为我不需要详细说明为什么这是一个坏主意!
首先,让我们考虑一下我们如何发现问题。 APM解决方案会提醒您有关应用程序异常行为的信息,但是如果您没有APM解决方案,则可以选择以下几种方法:
—建立综合交易
—手动仪器
—等待您的用户致电客户支持!!
接下来,让我们考虑在没有APM解决方案的情况下如何确定性能问题的根本原因。 我经常看到公司做以下两件事之一:
—查看运行时日志
—尝试在开发/测试环境中重现问题
日志文件是信息的重要来源,并且它们很多时候都可以(通过捕获异常堆栈跟踪信息)识别应用程序中的功能缺陷,但是当遇到不会引发异常的性能问题时,它们通常只会带来更多的混乱。
另外,通常并行进行,开发团队的任务是在测试环境中重现问题。 这里的挑战是您通常没有足够的上下文来使这些尝试富有成效。
综上所述,APM对您很重要,因此您可以了解应用程序的行为,在用户受到影响之前检测问题并快速解决这些问题。 在业务方面,APM解决方案很重要,因为它可以减少平均解决时间(MTTR),这意味着可以更快,更有效地解决性能问题,从而减少对业务底线的影响。
另外,请查看有关Java Performance的AppDynamics网络研讨会。 在这里注册!
APM的演变
多年来,APM市场已经有了长足的发展,主要是为了适应不断变化的应用程序技术和部署。 当我们有直接访问数据库的非常简单的应用程序时,APM仅仅是数据库的性能分析器而已。
但是随着应用程序迁移到Web上,我们看到了第一波应用程序服务器,然后APM解决方案才真正出现。 当时,我们非常关注单个运动部件的性能和行为,例如:
—托管我们应用程序的物理服务器和操作系统
— JVM
—应用程序服务器行为 —应用程序响应时间
云改变了我们对世界的看法,因为我们不再对应用程序的行为采取系统级的看法,而是对应用程序的行为采取以应用程序为中心的观点。 运行应用程序的基础结构仍然很重要,但是更重要的是,应用程序是否能够以正常方式执行其业务交易。
此外,通过扩展和收缩您的环境,您可能会发现单个服务器实例仅可以使用几个小时。 我听说过一个大型的基于云的应用程序,该应用程序在其JVM中使用大量RAM,但是其回收策略可确保在垃圾回收运行之前关闭这些服务器。 这可能是一个极端的例子,但它说明,曾经是最具影响力的性能问题之一,但创意部署模型已将其变为非问题。
您可能仍然会发现一些来自旧世界的APM解决方案,但是现代APM供应商已经看到了行业中的这些变化,并设计了APM解决方案以专注于您的应用程序行为,并更加重视业务交易的性能和可用性而不是支持它们的基础系统。
有兴趣阅读整篇名为“ Java 5最佳性能指标,技巧和窍门”的全文吗? 在这里下载!
购买与构建
本文涵盖了很多领域,现在您面临一个选择:您是评估APM解决方案并选择最适合您的解决方案还是尝试自己开发。 我真的认为这归结为您在购买或构建决策中需要问自己的相同问题:您的核心业务是什么,在财务上构建自己的解决方案值得吗?
如果您的核心业务是销售小部件,那么构建自己的绩效管理系统可能就没有多大意义。 另一方面,如果您的核心业务是为您的客户构建技术基础结构和中间件,那么这可能是有道理的(但请参阅下面对第二个问题的答案)。
下一个问题是:建立自己的解决方案在财务上是否值得? 这取决于应用程序的复杂程度以及停机时间或性能问题如何影响您的业务。 如果您的应用程序利用许多不同的技术(例如Java,.NET,PHP,Web服务,数据库,NoSQL数据存储),那么为所有这些环境开发性能管理代码将是一项艰巨的任务。 但是,如果您有一个简单的servlet来调用数据库,则它可能不是不可克服的。
最后,请问自己有关停机或性能问题对业务的影响。 如果您的公司通过在线销售产品来维持生计,那么停机时间将是灾难性的。 在当今竞争激烈的在线销售世界中,性能问题对您的影响可能超出您的预期。
所有这些都是说,如果您有一个复杂的环境,而性能问题或宕机对您的企业造成了巨大的损失,那么您最好购买APM解决方案,该解决方案可以让您专注于核心业务,而不是构建用于支持的基础架构您的核心业务。
结论
应用程序性能管理包括测量应用程序的性能,从支持您的应用程序的各个系统中捕获性能指标,然后将它们关联到整体视图。
APM解决方案通过观察您的应用程序来确定正常性,并在检测到异常行为时捕获有关异常行为的上下文信息并通知您问题。 高级实现甚至允许您通过更改部署来应对异常行为,例如通过向处于压力下的应用程序层添加新的虚拟服务器。
APM解决方案对您的业务很重要,因为它可以帮助您减少平均解决时间(MTTR),并减少性能问题对企业利润的影响。 如果您的应用程序复杂,性能或停机问题可能会对您的业务产生负面影响,那么评估APM解决方案并为您的应用程序选择最佳解决方案是您的最大兴趣。
有兴趣阅读整篇名为“ Java 5最佳性能指标,技巧和窍门”的全文吗? 在这里下载!
另外,请查看有关Java性能指标的AppDynamics网络研讨会。 在这里注册!
翻译自: https://www.javacodegeeks.com/2015/07/level-up-monitoring-application-performance-management.html