监控应用程序的性能是软件开发中最困难的挑战之一。事实上,任何编程语言和平台都是如此。JAVA性能监控本身存在一些独特的挑战。
Java性能监控是一项持续的任务,因此拥有合适的工具非常重要。我们将讨论九种Java性能监控工具。
1.Java分析工具
JVM概要文件通过跟踪所有方法调用提供大量原始数据,允许你查找CPU和内存消耗热点。
一个很好的扩展测试是设置一个ApacheJMeter作业,以在链接到探查器时命中你正在开发的数千次端点。这允许你指定生产所需的内存和CPU。
常用工具:VisualVM、JProfiler、YourKit和Java任务控制。
2.跟踪Java Web请求和事务
标准的java评测工具专注于整个应用程序中所有方法的性能。这些工具专注于单个web请求或事务的性能。
Prefix
Prefix提供了应用程序的深层性能细节,包括ORM调用和生成的SQL、SOAP/RESTAPI调用,以及最常用的第三方库和框架的跟踪细节。
XRebel
XRebel是使用web应用程序容器上的Java代理设置的,它在应用程序上提供了一个覆盖层,提供了当前请求的详细信息。
3..APM的Java性能监控
应用程序性能管理(APM)工具负责跟踪生产系统上的所有请求。这些分析器的诀窍是以智能的方式提供正确的信息,以免影响生产性能。
这是通过聚合定时统计信息和采样轨迹来实现的。这为你提供了在生产环境中运行的代码的方法级可见性。
4.具有真实用户监控(RUM)的Java性能监控
web应用程序客户端负担过重的情况并不少见。因此,提供交互式体验可能需要大量依赖性,例如JavaScript/css框架、web字体和图像。
RUM通过提供资产下载和页面呈现时间的可见性,深入了解应用程序的依赖关系。一些APM产品将此作为附加功能。也有独立的产品,如google PageSpeed。
5.JVM性能指标
JVM提供了大量有价值的信息,比如垃圾收集、内存使用和线程计数。这一数据通过JMX提供。
6.Web服务器(Apache/Nginx)访问日志
如果有Apache或Nginx代理请求到Java应用程序服务器,则可以监视访问日志。这是一种快速查看请求需要多长时间的方法。你可以聚合访问日志以查看最流行/最快/最慢的端点是什么。不过,通过命令行执行此操作可能会很耗时。
对于小型数据集,可以使用Apache Viewer等桌面工具,但对于登台和生产环境,托管日志记录解决方案是理想的。跟踪失败的请求也非常有用,可以通过聚合HTTP响应代码来完成。
7.跟踪所有Java异常
性能问题的最大原因之一可能是应用程序异常。当抛出异常时,它会导致线程在收集堆栈跟踪时暂停。即使是看似无害的已处理异常,在服务器负载过重的情况下也会导致巨大的性能瓶颈。
8.监视Java异常
当试图提高应用程序的性能时,通常不需要模拟用户的请求,而是监视其实际操作。通过监控生产和QA环境中的JavaEE服务器,你能够在问题变得过于严重之前根据趋势做出决策。你还可以找出响应时间的原因,根据这些时间实现优化。
9.记忆分析
崩溃后的应用程序内存分析有助于确定内存泄漏的原因。通过向JVM添加以下参数,可以指示JVM在OutOfMemoryError异常时转储堆:
-XX:+HeapDumpOnOutOfMemoryError
堆转储文件可以加载到分析器:Eclipse MAT中。你可以深入查看Overview或Leaks Suspects报告,以帮助确定内存异常的原因。
提高应用程序的性能
最大的收获是,使用所有这些工具,Java性能监控比以往任何时候都容易。不要被你应该做的所有事情淹没。首先从低风险开始,比如异常跟踪。至少知道你有哪些选择是很好的,希望你觉得这个列表很有用。想学习java编程的同学,不妨报个java培训班,有经验丰富的专业讲师线下面授指导教学,及时解决学习上的问题,让你获得快速提升。