今天打开jvm本来想监控一下本机jvm应用的性能,突然发现一年前帮一个广告平台做性能优化的配置居然还能看到相关应用信息,该平台一天单表数据量大概500w左右,忙时上千万数据,采用mysql分库每天定期分表;
很多时候我们要对这种高并发的应用都要进行实时监控,一方面可以监控性能差的程序,另一方面及时发现程序运行异常信息;
使用jmx监控,jvm配置如下:
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=×××××××××
-Dcom.sun.management.jmxremote.port=8000
-Dcom.sun.management.jmxremote.rmi.port=8000
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
使用jvirualvm配置连接应用后,我们在jvirualvm(免费)可以看到如下信息:
我们还可以看到操作系统相关信息:
线程执行的状态:
上图可以看到应用线程数量800个线程,是属于非常多的了,很多主流线程,没用的线程可以适当的关闭,及优化相关线程池,同时我们可以看到线程大概的执行情况,绿色为持续执行时间。
如果要对java线程使用方法监控,点击抽样器->cpu:
上图我们可以看到方法执行时间,当然我们还可以对方法里面的执行树进行查看,如上图点击CPU->快照,得到下图一,图二:
这里可以看到一个线程大概都执行了哪些方法,并且可以得知那些方法执行得比较慢。可以很好的实时监控程序性能,和一些问题程序,图二可看到一个线程执行的方法及相应时间;有时候解决程序性能的问题会比日志管用,因为这些图标都是实时的。
还可以jvm内存对象进行监控,类似jvm命令 jmap -histo:live pid,点击内存->快照,得到下图一
上图注意,可以对查询对象进行查询,上图查询com,可知该应用有大量活跃对象在运行;
分析内存:
因为程序是cms回收策略,且程序是属于高并发应用,标记缩减算法会产生大量空间碎片,空间碎片太多同样会发生fullgc导致会导致停顿;可能是算法的原因导致对象不回收;这里需要将回收策略改成G1回收,让程序可以分代回收,减少空间碎片,减少停顿;另外,这里需要找出为啥那么多对象不回收,检查程序写的是否有问题。
以上就是jvirualvm的基本使用。其实jdk自带的工具挺多的,还有jconsole可以对mbean查询并且修改,或者mbean对于大家都很陌生,但是程序里面一点都不陌生,几乎每个java应用都会使用mbean;典型的运用就是查看连接池配置,如druid,kafka的java客户端及服务端,都可以通过jconsole查看配置,甚至修改配置。
相关推荐
idea 插件visulgc 监控jvm
它集成了一系列功能,如内存分析、线程检查、CPU消耗监控、类加载和垃圾收集等,使得开发者能够深入了解应用在JVM上的运行状况。在本文中,我们将详细探讨如何使用VisualVM来监控本地和远程的JVM实例。 1. **...
原文链接:https://blog.csdn.net/m0_37814112/article/details/119028528 说明:Kubernetes集群之微服务JVM内存监控,prometheus服务yaml文件
在Java开发过程中,对JVM(Java虚拟机)的监控是至关重要的,它能帮助我们了解应用程序的运行状态,优化性能,以及及时发现并解决内存泄漏等问题。`vmmap`工具是Mac OS X系统中一个强大的内存分析工具,它可以用来...
为了确保应用程序高效稳定地运行,开发者需要对JVM进行监控,了解其内部状态,如内存使用、线程活动等。本文将探讨如何在Windows环境下通过简单的命令行工具来监控JVM实例的数量,以及如何进行线程测试,特别是在...
zabbix自动发现JAVA进程,并进行自动添加监控JAVA 进程的JVM数据,统计分析告警监控。...支持多种中间件,tomcat、weblogic、微服务方式部署JAVA应用监控。 自带发现脚本和监控脚本,以及zabbix导入模板。
监控JVM资源利用对于优化应用程序性能、排查问题以及确保系统稳定运行至关重要。VisualVM是一款强大的多合一JVM工具,它提供了一种直观的方式来查看和分析Java应用程序的资源占用情况。 VisualVM主要功能包括: 1....
LR监控JVM代码,复制代码到action中,通过control中可视化图表,可以时时监控JVM
JVM 内存监控是确保 Java 应用程序稳定性和性能的关键环节。通过合理利用 VisualVM 及其集成的命令行工具,开发者能够有效地监控和分析 JVM 的内存使用情况,及时发现并解决内存泄漏、GC 效率低下等问题。掌握这些...
jvisualvm是一款强大的、免费的Java应用程序性能分析工具,它允许开发者深入洞察JVM的行为,进行内存分析、线程监控、CPU性能剖析等。本文将详细探讨如何利用jvisualvm来进行有效的JVM监控。 一、jvisualvm简介 ...
jstatd是JVM监控服务,它基于RMI(Remote Method Invocation)技术,允许远程机器获取本地JVM应用的信息。默认监听1099端口。在启用jstatd时,可能需要配置安全策略文件(如`jstatd.all.policy`),赋予必要的权限...
在Java开发中,对JVM(Java虚拟机)的监控是至关重要的,它能帮助我们了解应用程序的性能、内存消耗和资源使用情况。Java提供了一系列内置工具,方便开发者监控JVM运行状态。以下是对这些工具的详细介绍: 1. **jps...
Java虚拟机(JVM)监控工具是确保Java应用程序性能和稳定性的重要资源。这些工具可以帮助开发者监控和分析JVM的运行时状态,包括内存使用、垃圾回收行为、线程活动等关键指标。本文将详细介绍如何在Java中使用JVM...
JRMc是专为Oracle JRockit JVM设计的一款高级监控工具,适用于基于WebLogic的应用程序。它提供了非常丰富的监控功能,包括但不限于内存使用情况分析、线程分析、CPU使用情况分析等。 **使用步骤:** 1. **启动JRMc*...
Kamon 是一组用于监控运行在 JVM 上的应用的工具和框架。示例代码:public class GetStarted { public static void main(String[] args) { Kamon.start(); final Histogram someHistogram = ...
JVM TI在JDK 1.2版本中引入,目的是为了让开发者能够创建更高效、更强大的Java应用程序管理和监控工具。 二、JVM TI的主要功能 1. 类加载和卸载:JVM TI允许工具监控类的加载、初始化、卸载过程,这对于理解程序的...
对于大型企业级应用,JVM的性能监控与调优是至关重要的,因为这直接影响到应用的响应速度、稳定性和资源利用率。本篇文章将深入探讨JVM的性能监控和调优技术。 1. **内存管理**: - **堆内存**:Java对象主要存储...
在Java应用程序的开发和运行过程中,了解JVM的工作原理,监控其状态,以及进行性能调优是至关重要的。本文将深入探讨JVM内存结构、监控工具及其在调优和GC优化中的应用。 **JVM内存机构** JVM内存主要分为以下几个...
Garg开发的一款轻量级JVM监控工具,它的设计灵感来源于top命令,但专门针对Java应用程序进行了优化。vjtop能够提供实时的CPU使用率、内存占用、线程状态等关键信息,并且能快速定位到CPU占用最高的代码片段,这对于...