ACOS统一监控之java应用断诊

文静2年前技术文章775
一、前言

对于一些使用Java语言搭建的应用架构,java的应用诊断可以帮助开发人员快速发现和解决应用程序中的问题,提高应用程序的性能和稳定性。以下是常用Java应用诊断方法:

  1. 堆转储分析:使用工具如MAT(Memory Analyzer Tool)分析Java应用程序的堆转储,并查找内存泄漏、对象泄漏、不必要的对象创建等问题。

  2. 线程转储分析:使用工具如jstack、jvisualvm等分析Java应用程序的线程转储,查找死锁、线程阻塞、死循环等问题。

  3. 日志分析:使用工具如ELK(Elasticsearch、Logstash、Kibana)分析Java应用程序的日志,查找异常、警告、错误等信息,帮助发现和解决问题。

  4. 性能分析:使用工具如JProfiler、VisualVM等分析Java应用程序的性能,查找CPU使用率过高、内存占用过高、网络延迟等问题。

  5. 代码审查:进行代码审查,查找潜在的问题和漏洞,以提高代码质量和可维护性。

总之,应用诊断是一个多方面的过程,可能需要综合使用各种工具和方法来解决问题。


二、ACOS应用诊断

acos统一监控平台具备支持的多种环境下多种语言应用的接入监控能力,对于使用acos-agent探针监控Java应用数据更是十分成熟,涵盖了多种维度下的数据分析,例如节点、接口、数据库、链路、外部调用等;每个维度下支持组件类型和指标较为深入。同时支持较为灵活的扩展和自定义配置。但是此篇文章仅介绍java应用一些在线诊断和异常、线程分析使用场景。


1、异常分析:

异常分析对于Java应用分析的重要性非常大,可以帮助开发人员快速发现问题、定位问题、稳定性和可靠性手段。通过异常分析可以发现应用中常见的异常,例如网络连接异常、数据库连接异常等,通过解决这些异常可以优化应用提高用户的体验。

以下为acos页面异常分析操作:

  1. 当前页面会收敛应用所有的调用过程中异常名+异常数统计。

  2. 可以查看具体异常的出现次数的时序图、出错接口。

  3. 查看异常占比定位异常出现多接口进行优化。

  4. 支持异常前后文以及关联的trace链路可以下钻整个链路查看。

1.2.png                           1.1.png


2、dump分析:

Java内存dump文件也称为Java堆转储文件,在Java应用程序发生崩溃或者内存泄漏等问题时,内存dump文件可以用于分析Java应用程序的内存使用情况,包括内存泄漏、对象生命周期、GC性能等等。常见的Java内存dump文件分析工具有:jvisualvm、VisualVM、Eclipse Memory Analyzer(MAT)、YourKit Java Profiler、YourKit Java Profiler。以上分析工具可以用于分析Java进程的内存使用情况、应用程序的性能瓶颈和内存泄漏问题,但是总体的交互界面不是很友好等问题。

  1. acos对于应用运行的jvm内存支持页面转存dump后上述工具分析。同时提供更友好的Grace分析页面。

12.png  


3、线程分析:

线程安全问题是Java应用中常见的问题之一,例如:线程分析可以帮助开发人员确定应用程序中最耗时的部分并提供性能优化;通过线程分析,开发人员可以了解应用程序中哪些线程正在运行以及这些线程所占用的资源等信息。通过优化线程,开发人员可以提高应用程序的响应速度和稳定性,从而提供更好的用户体验。

以下为acos页面线程分析操作:

  1. 当前页面会收敛应用所有的调用线程+线程统计+线程耗时。

  2. 支持查看具体线程的CPU耗时和线程数(便于定位当较多线程数对cpu耗时影响)。

  3. 支持方法栈的下钻查看方法栈具体调用方法便于问题定位,例如查看处于BLOCKED状态的线程对应的方法,从而优化指定代码段,以便降低CPU使用率。

4.1.png   4.2.png


4、Arthas能力:

Arthas是Java领域线上问题的利器,支持实时监控应用程序、Arthas支持热更新代码,开发人员可以在不停止应用程序的情况下对代码进行修改和更新;提供丰富的命令行工具,支持分布式应用程序可以帮助开发人员更加高效地开发和调试应用程序,提高应用程序的性能和稳定性。

以下为acos页面arthas分析操作:

  1. 提供部分arthas部分命令的白屏化,便于用户查看JVM进程实时的内存使用情况、系统信息、系统变量和环境变量JVM进程的线程耗时情况以及指定线程的实时方法栈。

  2. 支持查看任意类的某个实例实时的属性取值情况

  3. 对CPU耗时、内存分配等对象进行一定时间的采样并生成相应的火焰图等等

3.1.png   3,2.png

    4.支持Arthas Shell建立链接,通过命令行方式使用Arthas诊断。

3.3.png

综上所述,Java应用诊断对于提高应用程序的稳定性和可靠性、提高应用程序的性能和效率、缩短故障修复时间以及提高开发人员的工作效率等方面具有重要的作用。


结束

观测运维套件-ACOS可以有效的帮助企业提高运维效率 、提升系统可用率 、降低IT成本,欢迎企业预约演示或者试用。

相关文章

MapReduce生产经验

MapReduce程序效率的瓶颈在于两点:1)计算机性能(1)CPU、内存、磁盘、网络2)I/O操作优化(1)数据倾斜(2)Map运行时间太长,导致Reduce等待过久(3)小文件过多下来就根据这两点...

PostgreSQL 源码部署

PostgreSQL 源码部署

说明本篇文章介绍 PostgreSQL 单机源码编译部署的详细步骤。1. 准备工作1.1 源码包下载进入 PostgreSQL 官网下载页面  选择 Source 栏目: 接着就进入源码版本目录,选择...

MySQL性能优化(九)range和ref

MySQL性能优化(九)range和ref

有的时候,我们会遇到这样的情况:明明有索引,明明有更好的执行计划,但是优化器并没有选择这个最优的执行计划。优化器可能会选择并非最优的索引,可能选择并非最优的数据访问方式。下面是一个真实的例子:一个例子...

Trino部署

安装前准备1.1. 创建用户和用户组groupadd trinouseradd -g hadoop trino1.2. 配置环境变量1.2.1. 配置系统环境变量/etc/profileexport...

MySQL系统空间上涨

MySQL系统空间上涨

系统空间上涨一、介绍MySQL 的 ibdata1 是一个用来构建 innodb 系统表空间的文件。该文件包含了 undo ,还包含在用户在系统表空间创建的表信息和索引数据。一般如果数据空间均为独立表...

xargs-管道命令符

有时候我们的脚本却需要 echo '516' | kill 这样的效果,例如 ps -ef | grep 'ddd' | kill 这样的效果,筛选出符合某条件的进程pid然后结束。这种需求对于我们来...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。