首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏kimze

    分布式系统性能调优: 一篇彻底搞定JMC定位JVM性能问题

    Java性能调优:利用JMC分析性能 Java性能调优作为大型分布式系统提供高性能服务的必修课,其重要性不言而喻。 好的分析工具能起到事半功倍的效果,利用分析利器JMC、JFR,可以实现性能问题的准确定位。 Java线上进程很多面临大堆内存,无法dump堆内存快照,如何解决这样的问题,就可以通过JMC结合JFR连接到线上进程做一段时间采集,分析java进程性能问题 ---- 本文主要阐述如何利用JMC分析系统性能 JMC:Java Mission Control JFR:Java Flight Recorder JMC:Java Mission Control JMC打开性能日志后,主要包括7部分性能报告,分别是一般信息 jvm进程信息 图片 查看当前执行的 JFR 任务 图片 新建一个采集 5min的 JFR任务(采集固定时长JFR任务) 图片 查看采集任务状态 # 生成jfr收集文件后可导入JMC进行可视化问题定位

    2.1K62编辑于 2023-01-03
  • 来自专栏四火的唠叨

    JVM 问题定位工具

    熟悉 JDB 还是有价值的,很多情况下需要我们在命令行下完成简单的 debug 问题定位。 早些时候 JVM 曾经因为开放这样的 debug 端口,遇到远程扫描,虚拟机发生崩溃,参见 bug 链接。 VisualVM 和 JConsole VisualVM 这个工具来自 Netbeans 的项目,JVM 的运行情况一目了然。 JProfiler 和 Optimizeit JProfiler 和 Optimizeit 一样,都是综合性的性能剖析工具,甚至可以分析不同方法的 CPU 时间占用,帮助找出 CPU 热点。 总的来说,通常监控型的工具功能最强大,但是对系统资源要求也很高,对于生产环境上特有的问题,还是多考虑使用一些快照工具,内存和 CPU 占用小,系统中断时间短。

    55210编辑于 2022-07-15
  • 来自专栏菩提树下的杨过

    JVM问题典型案例定位学习

    technotes/guides/lang/cl-mt.html https://www.cnblogs.com/cz123/p/6918708.html https://www.jianshu.com/p/8e8a5a773648 解决方法: 既然多线程并发加载可能出问题,那么就放在单线程里加载,可参考下面的示例,假设有2个类:Parent及Child package com.cnblogs.yjmyzz.test; public 可以显式在主线程最开始用forName加载这2个类,这样类加载就变成在main线程中串行加载,问题得到解决: public static void main(String[] args) throws 大多数情况下,java并不推荐重载该方法,因为jvm的GC已经把垃圾回收做得很好了。 三、堆外内存不释放 先回顾下堆外内存的分布,对于DirectByteBuffer之类的对象,JVM堆上只存放了其"引用",如下图,引用指向的实际内存块在JVM堆外(即:实际分配的堆外内存不受GC管控)

    86410发布于 2020-03-19
  • 来自专栏bisal的个人杂货铺

    定位磁盘性能问题的武器

    最近碰到一个Oracle DG备库延迟的问题,经过排查,定位是磁盘性能问题,用的是普通磁盘,而不是SSD,且性能较差,存在读写等待。 关于定位磁盘的性能问题,可以有很多第三方或者原生工具的支持,Linux自带的iostat就是其中之一。 iostat指令是Linux/Unix系统上的一个性能分析工具,可以用来监控系统的I/O性能,包括了CPU利用率、磁盘读写速度、网络吞吐量等。 iostat可以实时输出系统的I/O性能信息,也可以按照一定的时间间隔输出统计信息。 iostat带上各种参数,即可以进行磁盘的性能验证,例如, iostat -xdm 1 iostat的常用选项如下, -c:显示CPU利用率相关的信息; -d:显示磁盘I/O相关的信息; -n:显示网络

    52041编辑于 2023-08-18
  • 来自专栏流柯技术学院

    jstack+top定位性能问题

    定位性能问题,尤其是cpu使用率过高时,经常需要查找cpu消耗较高的线程,然后查看其堆栈,从而进入代码定位问题。     该场景下, jstack+top是一种非常经典的方式。

    1.7K20发布于 2018-08-31
  • 来自专栏码上修行

    可视化分析定位线上 JVM 问题

    从上图可以发现,“3 problems detected”,即识别出 3 个内存问题。 3. 在线 GC 可视化视图解读 1)JVM memory size(JVM 内存大小) ? 3)Interactive Graphs(GC 前后堆区大小变化视图) 为了更好的了解 GC 垃圾回收对应的区域,可以参考这篇文章【从 Java 代码如何运行聊到 JVM 和对象的创建-分配-定位-布局 GC 就做一次压缩 -XX:CMSFullGCsBeforeCompaction=5 # 只是用设定的老年代回收阈值(下面指定的75%),和下面的参数配合使用 # 如果不指定,JVM 仅在第一次使用设定值 小结 通过三步法定位线上环境 JVM 问题,如频繁 Full GC 、内存泄漏或发生 OOM 现象,即将 GC 日志、Dump 文件及 APM 监控系统结合在一起观察分析,寻找出问题产生的根本原因,然后才能对症下药 ,真正解决系统存在的问题或是隐患,使系统性能更稳健,响应更快,从而使用户体验更佳。

    3.4K31发布于 2020-04-02
  • 来自专栏玩转JavaEE

    6 个 Java 工具,轻松分析定位 JVM 问题

    你可能一开始会比较畏惧使用复杂的工具去排查问题,又或者是打开了工具感觉无从下手,但是随着实践越来越多,对 Java 程序和各种框架的运作越来越熟悉,你会发现使用这些工具越来越顺手。 这篇文章中介绍下如何使用 JDK 自带工具来分析和定位 Java 程序的问题。 使用 JDK 自带工具查看 JVM 情况 JDK 自带了很多命令行甚至是图形界面工具,帮助我们查看 JVM 的一些信息。 jstat 工具允许以固定的监控频次输出 JVM 的各种监控指标,比如使用 -gcutil 输出 GC 和内存占用汇总信息,每隔 5 秒输出一次,输出 100 次,可以看到 Young GC 比较频繁, "main" #1 prio=5 os_prio=31 cpu=440.66ms elapsed=574.86s tid=0x00007ffdd9800000 nid=0x2803 waiting on 我们明明配置线程栈最大 256KB 啊,为什么会出现 4GB 这么夸张的数字呢,到底哪里出了问题呢?

    62310编辑于 2022-03-14
  • 来自专栏小豪成长日记

    快速定位网站性能问题,提前下班!

    内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步。 分享不易,希望能够得到大家的支持和关注。 查看network时间 直接来一张大图你怕不怕? 有兴趣的朋友可以用某些网站查看一些performance,看看自己的掌握程度,有问题欢迎讨论。 DOMContentLoad的时候会触发之前绑定的事件,而且没有在主线程中显示 总结 本文简单的说了两个点,一是network的timing栏,二是performance panel,只要掌握了这两个功能的使用方法,就可以快速定位网站性能问题 两个点:一个头信息压缩,二是解决了队头阻塞问题,三是增加了服务端push。 ,还是不够完善的,我们需要知道真实的用户环境下是怎么样的,需要RUM(Real User Monitoring: 真实用户数据监测),写个脚本来收集用户的访问情况,并可视化,作为我们的性能指标再好不过了

    44630编辑于 2023-10-22
  • 来自专栏大数据成长之路

    Hive性能调优之JVM重用(5)

    JVM重用是Hadoop调优参数的内容,其对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短。 Hadoop的默认配置通常是使用派生JVM来执行map和Reduce任务的。这时JVM的启动过程可能会造成相当大的开销,尤其是执行的job包含有成百上千task任务的情况。 JVM重用可以使得JVM实例在同一个job中重新使用N次。N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间,具体多少需要根据具体业务场景测试得出。 to run per jvm. jvm重用 当然,这个功能也是有它的缺点的。

    1.1K10发布于 2021-01-22
  • 来自专栏后端精进之路

    JVM性能优化系列-(5) 早期编译优化

    5. 早期编译优化 早期编译优化主要指编译期进行的优化。 autoboxing int result = show(3); //unboxing because return type of method is Integer 自动装箱的弊端, 自动装箱有一个问题 ,那就是在一个循环中进行自动装箱操作的时候,如下面的例子就会创建多余的对象,影响程序的性能。 遍历循环 遍历循环语句是java5的新特征之一,在遍历数组、集合方面,为开发人员提供了极大的方便。 变长参数 Arrays.asList(1, 2, 3, 4, 5); 条件编译 条件编译也是java语言的一种语法糖,根据布尔常量值的真假,编译器将会把分支中不成立的代码块消除掉。

    50620编辑于 2023-10-19
  • 来自专栏大数据成神之路

    实战案例分享:根据 JVM crash 日志定位和分析问题

    GC 的参数 JVM在GC的控制参数中,有一个GC前进行校验的参数,在校验过程中当发生地址异常的化会打印出异常的地址,并且让JVM crash,因为这个参数每一次GC都要检查,包括新生代的GC,影响一定的性能 JMV提供的SA工具 JVM提供的HSDB工具是一款非常好的工具,通过工具能查看和分析运行中的JVM的heap对象,当然也可以常看core dump, 但问题是HSDB是有UI界面的,我们在linux系统中通常没有 JVM环境的化,注意core dump要和JVM的分析的版本一致 SA环境需要root权限 3.2 分析对象 在前面提到的日志中,错误的对象地址是:Failed: 0x000000079ac5fe30 MethodHandler 虽然我们找到了JVM crash问题的根因,但我们还需要继续深入的找到谁才是罪魁祸首,就是JVM为何会调整vmtarget的值 分析谁调用了adjust_vmtarget函数即可 JVM提供了环境参数可以控制是否压缩指针 -XX:+UseCompressedOops 这样一个完成的通过JVM crash 日志和core dump进行JVM问题定位和分析结束了,希望能对你有所帮助

    2.9K21发布于 2020-11-06
  • 来自专栏盛开在夏天的太阳

    JVM-GC3--定位线上OOM问题的方法

    第二节jvm公开课课, 主要介绍了一个知识点. 那就是线上发生OOM, 如何定位 1. top命令, 线上查看cpu和内存的使用情况 2. jstack 进程号   查看当前进程有哪些线程   初步定为排查线程的健康状况, 如果有很多线程处于等待状态 ,那么可能就有问题了 3. jstat -gc 线程号: GC回收的情况 4. jinfo 3271    显示进程中的常用信息 5. jmap   jmap -dump:format=b, file= 很重要的一个方面, 加日志. ---- 常见的GC问题  1. java启动时如何设置jvm的日志   java -Xloggc:/root/1.txt    这个命令是把jvm日志打印到/root/1 看看哪些类实例最多, 这样内存和cpu居高不下. ---- 扩展阅读 整理这个文件的时候, 想起之前同事整理的一篇在spring cloud环境下,如何通过spring boot actuator来定位线上问题

    1.5K30编辑于 2022-05-09
  • 来自专栏JavaGuide

    手把手教你定位常见Java性能问题

    概述 性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱 ,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。 预备知识 既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。 这里dump信息直接定位出了问题方法以及代码行,这就定位出了CPU占满的问题。 总结 本文模拟了常见的性能问题场景,分析了如何定位CPU100%、内存泄漏、死锁、线程频繁切换问题。分析问题我们需要做好两件事: 掌握基本的原理 借助好工具。

    1.4K10发布于 2020-05-07
  • 来自专栏咸鱼学Python

    如何定位及优化SQL语句的性能问题

    而对于不同的表结构,采用不同的SQL语句,性能上可能千差万别。本文,就基于MySql数据库,来介绍一下如何定位SQL语句的性能问题。 对于低性能的SQL语句的定位,最重要也是最有效的方法就是使用执行计划。 不包含任何子查询或union等查询 2 PRIMARY 包含子查询最外层查询就显示为 PRIMARY 3 SUBQUERY 在select或 where字句中包含的查询 4 DERIVED from字句中包含的查询 5 age 索引长度:int类型占4位,允许null,索引长度为5。 ? 5、尽量避免使用 or 来连接条件 在 where 子句中使用 or 来连接条件,引擎将放弃使用索引而进行全表扫描。

    1.6K30发布于 2020-07-21
  • 来自专栏流柯技术学院

    18 个命令&工具帮你定位 Linux 性能问题

    性能测试的工程师来说,top命令式是非常有用的,我在另外一篇文章“老李分享:应用程序性能瓶颈定位方法和原理”,里面提供了一个案例,来帮助我们进行性能定位。 2. 它是一个非常有用的工具,系统管理员可以用来监控网络性能定位并解决网络相关问题。 这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘。 Nagios – 网络/服务器监控 Nagios是领先而强大的开源监控系统,他可以让网络/系统管理员在问题影响到正常的业务之前发现并解决它们。 它可以危险警告并指出系统/服务器是否有异常,这可以间接帮助你在问题发生之前采取抢救措施。

    1.2K21发布于 2018-08-30
  • 来自专栏程序猿DD

    6 款 Java 8 自带工具,轻松分析定位 JVM 问题

    这篇文章中介绍下如何使用 JDK 自带工具来分析和定位 Java 程序的问题。 使用 JDK 自带工具查看 JVM 情况 JDK 自带了很多命令行甚至是图形界面工具,帮助我们查看 JVM 的一些信息。 jstat 工具允许以固定的监控频次输出 JVM 的各种监控指标,比如使用 -gcutil 输出 GC 和内存占用汇总信息,每隔 5 秒输出一次,输出 100 次,可以看到 Young GC 比较频繁, "main" #1 prio=5 os_prio=31 cpu=440.66ms elapsed=574.86s tid=0x00007ffdd9800000 nid=0x2803 waiting on 51)   at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) "Thread-1" #13 prio=5  我们明明配置线程栈最大 256KB 啊,为什么会出现 4GB 这么夸张的数字呢,到底哪里出了问题呢?

    84410编辑于 2022-03-14
  • 来自专栏码农架构

    JVM问题定位 | 查看当前线程信息,查看线程的堆栈?

    这里的cpu使用率与linux 命令top-H-p<pid>的线程%CPU类似,一段采样间隔时间内,当前JVM里各个线程的增量cpu时间与采样间隔时间的比例。 使用参考 当前最忙的前N个线程并打印堆栈: 没有线程ID,包含[Internal]表示为JVM内部线程,参考dashboard命令的介绍。 - thread –all, 显示所有匹配的线程 显示所有匹配线程信息,有时需要获取全部JVM的线程数据进行分析。 为了排查这类问题, arthas提供了thread-b, 一键找出那个罪魁祸首。

    4K20发布于 2021-11-12
  • 来自专栏半旧的技术栈

    JVM揭秘之旅:打破性能瓶的终极指南(5)

    (如-XX:+HeapDumpOnOutOfMemoryError)、内存泄漏定位(MAT工具)、并发瓶颈破解; 前沿技术追踪:涵盖元空间、JIT编译、协程(Loom项目)等新特性,提前掌握未来技术栈 适合读者: ✅ 渴求突破CRUD的Java工程师 ✅ 被性能问题困扰的架构师 ✅ 备战P7/P8级技术面试的求职者 专栏承诺:不用空洞理论堆砌,每篇均附可复现的代码案例及调优脚本。 当有新的引用指向对象时,计数器加1 当引用被删除或指向其他对象时,计数器减1 回收时机:当计数器变为0时,表示对象不再被引用,可以立即回收其内存 可能带来循环引用问题。 相比引用计数法,它能处理循环引用问题,但需要暂停程序运行(Stop-The-World),常用于Java等语言。 就像一串葡萄。在串上的不可以被回收,散落的可以被回收。 不过好像有个问题。软引用对象引用的对象被垃圾回收了。但软引用还被放在list几何中呢。 怎么才能实现清理无用的软引用呢? 当然是引用队列了。 弱引用的应用 和软引用使用特别类似。

    23910编辑于 2025-07-10
  • 实时性能监控不再难!Ubuntu部署Netdata助你轻松定位性能问题

    这时候,你多么希望能有一个好用的工具来帮你快速定位问题所在!别担心,今天我要介绍的 Netdata 就非常不错。Netdata 是一个实时系统监控工具,可以帮助你在遇到性能问题时迅速找到解决方案。 它不仅可以监控硬件层面的各种指标(如 CPU、内存、磁盘使用率),还可以监控各种应用程序和服务的性能指标。通过简洁直观的可视化界面,你可以一目了然地了解系统的运行状态。 开箱外警报附带数百个开箱即用的警报,用于检测常见问题和陷阱,揭示容易被忽视的问题。它支持多种通知方法,让您知道何时需要您的关注。 端口即:【http://localhost:9200】访问 Cpolar 管理界面,使用 Cpolar 官网注册的账号登录,登录后即可看到 cpolar web 配置界面,接下来在 web 界面配置即可:5. 希望这篇文章能帮助你在遇到性能问题时迅速找到解决方案!

    85700编辑于 2024-12-16
  • 来自专栏时悦的学习笔记

    .利用Django监控数据库性能定位问题

    CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操作系统用户:oms 数据处理:pandas 前端展示:highcharts 上周我们通过一周的时间讲述了如何监控数据库的性能趋势并找出具体的语句 Oralce性能状态趋势(天) 首先是整体的趋势,以天为单位,这样我们才会对我们维护的数据库了然于心 ? 在这里我们可以看到每天的情况,对于某天的异常我们继续下一步查看更详细的 2.Oracle性能状态趋势(小时) 这里我们观察到每天各个时间段的情况,定位到具体的时间点 ? 定位到时间点后我们可以通过TOP SQL 界面定位到语句 3. 查找各个时间段的TOP 语句和等待事件 也可以查找这个时间段的等待事件 ? ?

    71710发布于 2020-08-19
领券