全部产品

应用诊断简介

更新时间:2019-06-04 14:39:53

基于 HSF 框架开发的应用部署并运行在容器(EDAS-Container)中,EDAS 提供了基于容器的诊断功能,为您提供相应数据来诊断应用运行问题。

应用诊断和基础监控的不同之处如下:

  • 监控对象不一样:基础监控面向的是应用实例,应用诊断面向是应用所在的容器。
  • 应用诊断不支持查看集群诊断信息,仅支持查看实例诊断信息。
  • 基础监控存在一定的时延,应用诊断除了内存监控外,其它数据由于不需要后续的统计计算,所以几乎是实时的。

查看容器具体信息,请按以下步骤操作:

  1. 登录 EDAS 控制台,在左侧导航栏中单击应用管理 > 应用列表,在应用列表中单击具体的应用名称。

  2. 应用详情页面左侧的导航栏中选择应用诊断 ,进入应用诊断页面。

  3. 单击 ECS 实例(实例 ID/名称/IP) 右侧的下拉箭头,选择实例。

  4. 单击具体页签,监控容器的相关指标。

    应用诊断页面中包含以下页签:

    • GC 诊断:实际包含 GC 和内存诊断两部分。

      • GC:监控当前选择的应用实例发生 GC 的一些性能指标,同时还可以基于所选时间区间来分析当前实例的 GC 情况。帮助您初步判断应用中的某个实例的健康状态,即应用是不存在内存泄漏或者大对象、应用存在大对象、应用可能存在内存泄漏。

        • 当前实例的 GC 策略是 -XX:+UseParallelGC 或者 -XX:+UseParallelOldGC
        • FGC 全称为 Full Garbage Collection;YGC 全称为 Young Garbage Collection。
        • 当某一分钟内发生的 YGC 总次数大于6或者 FGC 总次数大于10,且这一分钟内的 YGC 或 FGC 为所选时间区间内最多,则这一分钟被为 YGC/FGC 最活跃的时间。
        • 当某一分钟内发生的所有 YGC 总耗时大于100 ms 或者 FGC 总耗时大于300 ms,且这一分钟的 YGC 或者 FGC 总耗时为所选时间内最长,则这一分钟为 YGC/FGC 最耗时的时间。
        • 回收前后的内存指的是应用占有的内存。
      • 内存:提供应用实例中 Tomcat 容器所在 JVM 进程的堆 (heap)与非堆(non heap)的统计信息。

    • 类加载:提供实时的 JAR 包的加载情况。开发者有时会碰到应用中存在 JAR 包版本冲突的问题,此功能可以很直观的体现出相应的 JAR 加载的路径,从而简化此类问题排查的成本。

    • 线程: 当前 JVM 进程中所有线程的基本信息,包括 ID、状态、线程名,且统计字段均为 JVM 原生信息。
    • 连接器: Tomcat 连接器指的是 Tomcat 的 XML 配置中的<Connector />,可理解为每一个<Connector />的配置为一行拉取出来的信息。该视图提供最近十分钟之内对应连接器的运行情况。

      从连接器的角度每个连接器会有一定数量的线程(既线程池)服务于该连接器,以处理到来的请求;有时遇到并发或者吞吐的瓶颈时,需要知道相应连接器中线程池处理情况,以 HTTP 连接器为例,当配置如下的 XML 时:

      <Connector port="8080" protocol="HTTP/1.1" maxThreads="250" .... />

      单击连接器右侧操作选项中的线程池信息,会看到比较详细的信息.

      上图说明该应用的几乎没有负载,如果“忙碌线程数”快接近所配置的线程池最大值时,说明系统正面临着严重的并发问题,此时应该考虑将应用扩容或者优化业务代码。

    • 对象内存分布:选择系统类Java 基本对象类类加载相关。然后会基于选择的 3 个大类,以饼状图和列表的形式展示具体类的对象个数、占用空间,以及在占系统总内存的百分比。

    • 方法追踪:方法追踪比较复杂,请参考方法追踪

    • 线程热点:包括两个功能:获取线程快照和分析调用统计,请参考线程热点

    • Druid 连接池监控:请参考 Druid 连接池监控

    • Commons Pool:请参考 Commons Pool