About JDKFlightRecorder--人工翻译

JFR是什么

JDK Flight Recorder是一个工具,用于收集有关JVM以及在JVM上运行的Java程序的诊断和分析数据。

  • 集成到Java虚拟机(JVM)中,
  • 使用默认设置时,性能影响小于1%。几乎不产生性能开销,因此即使在负载很重的生产环境中也可以使用。
JFR的优点

提供更好用的数据:JFR使用的一致数据模型使交叉引用和过滤事件变得更容易

允许第三方程序提供事件:一组API允许JFR监视第三方应用程序,包括WebLogic Server和其他Oracle产品。

降低企业成本:JFR使您能够花费更少的时间诊断和排除故障,减少运营成本和业务中断,在出现问题时提供更快的解决时间,并提高系统效率。

JFR使用场景

profilling(程序画像分析):JFR持续保存有关运行系统的大量数据。这些分析信息包括线程样本(显示程序在何处花费时间)、锁分析和垃圾收集等详细信息。

Black Box Analysis(黑盒分析):JFR不断地将信息保存到循环缓冲区中。当检测到异常时可以访问该信息以查找原因。

Support and Debugging(官方支持与调试):在联系Oracle官方支持以帮助诊断Java应用程序的问题时,JFR收集的数据可能是必不可少的。

JFR事件

Event(事件),是JFR的基石,JFR基于事件收集数据,事件在JVM或Java程序中的特定时间点发生。每个事件都有名称、时间戳和可配置的有效负载。有效负载是与事件关联的数据,例如,CPU使用率、事件前后的Java堆大小、锁保持器的线程ID等等。大多数事件还包含事件的所属线程、堆栈跟踪以及持续时间等信息。借助事件提供的信息,可以重新构建出JVM和Java程序运行时的详细信息。

JFR事件根据采集方式可以分为三种

  • 持续时间事件:需要一定时间去发生,并在结束时进行记录的事件。你可以为持续时间事件设置阈值,以便只记录持续时间超过阈值的事件。这对于其他类型的事件是不可能的
  • 即时事件:发生时立即记录
  • 样本事件,也叫做可请求事件(requestable event)。以周期性记录样本事件来获取系统活动样本。其中这个采样频率是可配置的。

JFR以极高的细节水平监控运行中的系统。这会产生大量的数据。要使开销尽可能低,建议将JFR监控的事件类型限制为您实际需要的类型。在大多数情况下,持续时间非常短的事件是无意义的,因此建议将JFR监控持续时间设置为高于对于事件来说有意义的阈值。

JFR数据流

二进制格式的JFR记录文件对于应用程序的读写是非常紧凑和高效的。

JFR从JVM(通过内置API)和Java程序(通过JFR API)收集数据。这些数据被存储在小型线程本地缓冲区中,然后再被刷新到全局内存缓冲区中,最后,再被写入磁盘。磁盘的写入操作开销很大,所以你应该小心地选择需要被JFR监控的事件来减少磁盘的写入操作。

在各种缓冲器之间没有信息重叠。一个数据块可以在内存或磁盘中使用,但不能同时在这两个地方使用。这会导致:

  • 如果电源突然故障,尚未刷新到磁盘缓冲区的数据会丢失。

  • JVM崩溃可能会导致核心文件(即内存缓冲区)或磁盘缓冲分区中的一些数据可用。但JFR不提供合并这些缓冲区的功能。

  • 在JFR收集的数据可供使用之前,会有一些延迟(例如,在使其可见之前,必须将其移动到不同的缓冲区)。

  • JFR记录文件中的数据可能不是按时间顺序排列的,因为数据是从多个线程缓冲区中以块的形式收集的。

在某些情况下,JVM会删除一些事件的顺序以确保JVM不会崩溃。任何无法快速写入磁盘的数据都将被丢弃。发生这种情况时,JFR记录文件将包含有关受影响时间段的信息。此信息也将记录到JVM的日志记录工具中

JFR可以配置为不向磁盘写入数据。在此模式下,全局缓冲区作为一个循环缓冲区来使用,当缓冲区满时丢弃日期最早的数据。这种开销非常低的模式仍然收集根本原因问题分析所需的所有重要数据。虽然全局缓冲区中只保存最新数据,但是通过操作或者当监控系统检测到问题时仍然可以把数据根据需要写入磁盘。在此模式下,只有最后几分钟的数据可用,因此它只包含最近的事件。如果需要获取长时间内的完整操作历史记录,请在事件写入磁盘时使用默认模式。

JFR架构

JFR由以下两个组件构成

  • JFR运行时引擎:在JVM内部产生监控记录的引擎

    JFR运行时引擎又由下面两个组件构成

    • 资源代理:控制缓冲区、磁盘的I/O、MBean等资源。此组件还提供了一个由C和Java代码编写的动态库,还提供了一个与JVM无关的纯Java实现
    • 数据生产者:从JVM以及Java程序或者通过一个JavaApi从第三方应用程序收集事件数据
  • 用于JMC的JFR插件,使您能够从JMC客户端使用图形化界面启动、停止以及配置JFR监控,以及对监控产生的JFR文件的查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在外面要叫头哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值