JVM监控能够监控透视宝Java应用程序的资源和性能,帮助运维人员分析内存、线程、线程池的性能数据,掌握每个进程运行时的资源使用情况,判断是否有内存溢出或应用运行异常情况。
登录透视宝后,在Server列表单击应用服务卡片,进入当前应用服务的性能分析页面,单击左侧导航栏的JVM。
内存持续增长,如果内存持续增长有可能会导致内存溢出。
频繁的完全垃圾回收,JVM在完全垃圾回收时会使所有正在运行的程序停顿,直至垃圾回收完毕,此段时间内,应用系统的响应就会变慢。
发现互相死锁的线程。
监控线程中的代码堆栈执行时间。
监控所有线程状态、CPU使用率。要特别注意,长时间处于Blocked、Waiting和Timed_Waiting状态的线程,其阻塞和等待的代码处会有潜在的性能问题,根据我们统计出来的这些状态的线程,用户可以用jstack命令,具体检查阻塞和等待的代码。
注意:只有Java应用支持JVM监控。
在JVM页面的JVM进程列表查看进程名称、进程路径、主机、响应时间、吞吐率、错误率、cpu最大使用率、JVM版本和启动时间等。单击进程名称查看JVM的内存、线程及线程池运行情况。
在内存页签,查看堆&垃圾回收情况,包括内存使用状态的概要信息、堆内存及非堆内存的使用情况、垃圾回收情况。
堆内存和非堆内存
查看堆内存和非堆内存在一段时间内的变化趋势,包括Usage、MAX、Commited。
堆的持续增长意味着潜在的内存泄漏或溢出,通过变化趋势图发现潜在风险。
垃圾回收
在垃圾回收数量&响应时间图表中,关注垃圾回收的数量和响应时间,垃圾回收的响应时间影响到系统的响应时间。
分析线程运行状态
在线程页签,查看线程数变化趋势、所有线程的运行状态及各性能指标数据,不同状态的线程用不同颜色标记。
其中,Cpu使用时长是指从线程启动到现在为止共运行的时间;Cpu则是以jvm_period为周期,在这个周期内,该线程执行的CpuTime占jvm_period的比率。
要特别注意,长时间处于Blocked、Waiting和TimedWaiting状态的线程,其阻塞和等待的代码处会有潜在的性能问题,根据我们统计出来的这些状态的线程,用户可以用jstack命令,具体检查阻塞和等待的代码。
通过线程的运行状态能够发现死锁问题,但没有必要监控的线程,不需要监控时在配置文件中将dumpThread配置为false即可。
分析线程池容量变化
在线程池页签,查看线程池容量变化趋势、队列容量变化趋势、所有线程池的运行状态及各性能指标数据。