首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏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问题典型案例定位学习

    https://www.cnblogs.com/cz123/p/6918708.html https://www.jianshu.com/p/8e8a5a773648 解决方法: 既然多线程并发加载可能出问题 可以显式在主线程最开始用forName加载这2个类,这样类加载就变成在main线程中串行加载,问题得到解决: public static void main(String[] args) throws 大多数情况下,java并不推荐重载该方法,因为jvm的GC已经把垃圾回收做得很好了。 FinalReference,放入一个队列里,当GC发生时,如果该实例被标识为垃圾对象,GC清理完后,会用一个额外的线程(重点:这是1个独立的单线程),从队列里一个个取出来,调用重载的finalize方法,如果这种对象在JVM 三、堆外内存不释放 先回顾下堆外内存的分布,对于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
  • 来自专栏架构师成长之路

    java(10)-JVM性能监控和优化

    GC监控是为了鉴别JVM是否在高效地执行GC,以及是否有必要进行额外的性能调优。基于以上信息,我们可以修改应用程序或者调整GC算法(GC优化)。 全称“Java Virtual Machine statistics monitoring tool”,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size 利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。查看GC操作的信息,类装载操作的信息以及运行时编译器操作的信息。 需要注意的问题: 1、不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信息也有差别。 2、在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性。

    1.6K11编辑于 2022-04-14
  • 来自专栏码上修行

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

    从上图可以发现,“3 problems detected”,即识别出 3 个内存问题。 3. 在线 GC 可视化视图解读 1)JVM memory size(JVM 内存大小) ? 3)Interactive Graphs(GC 前后堆区大小变化视图) 为了更好的了解 GC 垃圾回收对应的区域,可以参考这篇文章【从 Java 代码如何运行聊到 JVM 和对象的创建-分配-定位-布局 从 GC 日志可视化入手,再去 pinpoint 系统监控探究问题所在 1)通过 Pinpoint 监控系统查看频繁发生 Full GC 的系统应用所在的服务器 JVM 参数配置情况,结果如下图所示: 小结 通过三步法定位线上环境 JVM 问题,如频繁 Full GC 、内存泄漏或发生 OOM 现象,即将 GC 日志、Dump 文件及 APM 监控系统结合在一起观察分析,寻找出问题产生的根本原因,然后才能对症下药 ,真正解决系统存在的问题或是隐患,使系统性能更稳健,响应更快,从而使用户体验更佳。

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

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

    你可能一开始会比较畏惧使用复杂的工具去排查问题,又或者是打开了工具感觉无从下手,但是随着实践越来越多,对 Java 程序和各种框架的运作越来越熟悉,你会发现使用这些工具越来越顺手。 这篇文章中介绍下如何使用 JDK 自带工具来分析和定位 Java 程序的问题。 使用 JDK 自带工具查看 JVM 情况 JDK 自带了很多命令行甚至是图形界面工具,帮助我们查看 JVM 的一些信息。 你也可以先通过下面这张图了解下各种工具的基本作用: 为了测试这些工具,我们先来写一段代码:启动 10 个死循环的线程,每个线程分配一个 10MB 左右的字符串,然后休眠 10 秒。 参数设置成功了: 继续观察监视面板可以看到,JVM 的 GC 活动基本是 10 秒发生一次,堆内存在 250MB 到 900MB 之间波动,活动线程数是 22。 我们明明配置线程栈最大 256KB 啊,为什么会出现 4GB 这么夸张的数字呢,到底哪里出了问题呢?

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

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

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

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

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

    ParCompactionManager*, oopDesc*)+0x2c5 Stack 信息: Stack: [0x00007fa9482b3000,0x00007fa9483b4000], sp=0x00007fa9483b2a10 GC 的参数 JVM在GC的控制参数中,有一个GC前进行校验的参数,在校验过程中当发生地址异常的化会打印出异常的地址,并且让JVM crash,因为这个参数每一次GC都要检查,包括新生代的GC,影响一定的性能 JMV提供的SA工具 JVM提供的HSDB工具是一款非常好的工具,通过工具能查看和分析运行中的JVM的heap对象,当然也可以常看core dump, 但问题是HSDB是有UI界面的,我们在linux系统中通常没有 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 进程号   查看当前进程有哪些线程   初步定为排查线程的健康状况, 如果有很多线程处于等待状态 很重要的一个方面, 加日志. ---- 常见的GC问题  1. java启动时如何设置jvm的日志   java -Xloggc:/root/1.txt    这个命令是把jvm日志打印到/root/1 内存不超过10%, 但是频繁发生FGC是什么原因?如何排查? 第一步: 查看启动参数.  看看哪些类实例最多, 这样内存和cpu居高不下. ---- 扩展阅读 整理这个文件的时候, 想起之前同事整理的一篇在spring cloud环境下,如何通过spring boot actuator来定位线上问题

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

    翻译:10行命令60秒快速定位性能瓶颈

    Gregg和Netflix性能团队。这篇文章会教你怎么用10个常用的linux工具在60秒内完成对性能问题的初步诊断。 当你登录到linux服务器处理性能问题的时候,最开始的一分钟你会做些啥? 这些工具帮我们解决了大部分性能问题,但有时候我们仍需要登录到服务器上运行一些标准的Linux性能排查工具。 综述 在这篇文章中,Netflix团队将展示如何用你随手可及的Linux命令行工具在60s内完成一次性能问题排查。通过以下10个命令,你可以在60秒内对系统的资源使用率和进程运行状况有个整体的了解。 比如,如果你上线查性能问题,你看到load1远低于load15,那你可能已经错过这次性能问题了。 如果有的话,这条命令将会展示系统最近的10条信息。 找出其中可能导致性能问题的错误。上面这个例子中包含一条因为oom导致进程被kill和tcp丢请求的信息。 不要跳过这步,dmesg非常值得查看。

    1.3K20发布于 2021-01-21
  • 来自专栏JavaGuide

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

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

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

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

    而对于不同的表结构,采用不同的SQL语句,性能上可能千差万别。本文,就基于MySql数据库,来介绍一下如何定位SQL语句的性能问题。 对于低性能的SQL语句的定位,最重要也是最有效的方法就是使用执行计划。 --可以用 select id from t where num=10 union all select id from t where num=20 --替代 select id from t where num=10 or num=20 6、尽量避免使用in和not in 在 where 子句中使用 in和not in,引擎将放弃使用索引而进行全表扫描,可以使用exists和not exists。 10、尽量避免使用游标 11、任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

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

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

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

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

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

    这篇文章中介绍下如何使用 JDK 自带工具来分析和定位 Java 程序的问题。 使用 JDK 自带工具查看 JVM 情况 JDK 自带了很多命令行甚至是图形界面工具,帮助我们查看 JVM 的一些信息。 你也可以先通过下面这张图了解下各种工具的基本作用: 图片 为了测试这些工具,我们先来写一段代码:启动 10 个死循环的线程,每个线程分配一个 10MB 左右的字符串,然后休眠 10 秒。 可以想象到,这个程序会对 GC 造成压力: //启动10个线程 IntStream.rangeClosed(1, 10).mapToObj(i -> new Thread(() -> {     while 参数设置成功了: 图片 继续观察监视面板可以看到,JVM 的 GC 活动基本是 10 秒发生一次,堆内存在 250MB 到 900MB 之间波动,活动线程数是 22。 我们明明配置线程栈最大 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
  • 实时性能监控不再难!Ubuntu部署Netdata助你轻松定位性能问题

    这时候,你多么希望能有一个好用的工具来帮你快速定位问题所在!别担心,今天我要介绍的 Netdata 就非常不错。Netdata 是一个实时系统监控工具,可以帮助你在遇到性能问题时迅速找到解决方案。 它不仅可以监控硬件层面的各种指标(如 CPU、内存、磁盘使用率),还可以监控各种应用程序和服务的性能指标。通过简洁直观的可视化界面,你可以一目了然地了解系统的运行状态。 实时性:Netdata 每秒更新一次数据,确保你能够及时发现和解决问题。轻量级:占用资源极少,不会对系统造成额外负担。易用性:安装简单、配置方便,适合所有技术水平的用户。 开箱外警报附带数百个开箱即用的警报,用于检测常见问题和陷阱,揭示容易被忽视的问题。它支持多种通知方法,让您知道何时需要您的关注。 希望这篇文章能帮助你在遇到性能问题时迅速找到解决方案!

    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
  • 来自专栏漫谈测试

    性能测试需要定位问题和系统瓶颈优化

    性能测试工作实质上是通过程序或者工具模拟大量用户操作来验证系统承载能力,找出潜在的性能问题,分析并解决这些问题;找出系统性能变化趋势,为后续的性能扩展提供参考。 代码问题通常集中在事务、多线程、通信、存储及算法方面。测试人员可以不必去写一段优秀的代码,但要能够定位问题到代码段。架构高性能的系统架构与普通系统架构也不一样。 有些可以通过调整中间件的配置来改善系统性能,比如用户请求过多,可以适当增大线程池;当JVM内存回收,特别是Full GC过于频繁时,我们就要分析到底是哪些程序导致了大量的 Heap(堆)内存申请;当CPU 过于繁忙时,我们会去分析哪个线程占用了大量 CPU资源,通过线程信息定位到程序。 这些都是常见的分析方法,也容易掌握,掌握这些分析方法能够解决 80%以上的性能定位问题。操作系统操作系统统筹管理计算机硬件资源,针对不同业务,不同场景也会有一些可以优化的参数。

    60410编辑于 2024-12-23
领券