问题标签 [jfr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在java程序中给出命令行选项?
我想在运行我的 java 程序时使用 Java 飞行记录器。我可以在 java 程序本身而不是在运行应用程序时传递参数吗?
例如:我有一个 java 类说“HelloWorld.class”我想在运行时使用 java 飞行记录器,我可以用它来实现
java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder HelloWorld
但我想实现这个解锁商业功能并从我的java代码启动飞行记录器。可能吗?
java - 如何在 Java Flight Recorder 采样中包含 IO 绑定方法?
我在启动时通过为被测 Java 程序指定以下 CLI 选项来启动 JFR:
测试执行需要 90 秒才能完成。
在 Java Mission Control 中打开 JFR 转储后,JMC 中的 Call Tree 选项卡如下所示:
每秒少于 1 个样本。这使得细节钻取、热门方法和概述选项卡实际上毫无用处。经过初步调查,确定方法采样设置为默认值 10 毫秒,事实证明,这个意外结果是因为在执行各种不同的数据库读取时,大约 98% 的 90 秒用于等待套接字 I/O ,所以我只在另外 2% 的时间里获取方法样本。
如何在方法时间中包含 I/O 绑定样本,以帮助定位花费最多时间等待数据库结果的跟踪?该过程包含多个地方的数据库查询,这些查询又从多个其他地方调用,因此猜测慢速调用路径并不容易。
java - 在 Neo4j Desktop 中启用 Java Flight Recorder
我正在尝试启用 Java Flight Recorder 以在使用 Neo4j Desktop 运行 Cypher 查询时每 10 秒收集一次线程转储。但是在 Neo4j 桌面的“设置”选项卡(配置文件)中,推荐的飞行记录器选项无法识别并在启动过程中抛出错误。
我正在使用 Oracle JDK 11。
这些是我在文件中输入的命令 -
当我启动数据库时,这些会引发错误 -
通过在另一个简单程序上进行测试,我已经验证了 Flight Recorder 确实可以在我的机器上运行 -
此命令工作正常并成功生成记录。
还有其他方法可以在配置文件中启用飞行记录器设置吗?
java-11 - 如何在多个线程上追逐 JFR 事件
我正在努力使用自定义 JFR 事件对异步 servlet 请求处理进行建模。我面临的挑战是,在异步处理中,一个请求可能会被#dispatch()
编辑多次。这意味着整个请求处理链可能会被执行多次,有时会在不同的线程中执行。如何使用自定义 JFR 事件对此进行建模?
对我有帮助的是“父”事件的概念(可能在不同的线程中)或事件的暂停和恢复。
编辑
稍微说明一下这个问题。处理异步请求可能需要 100 秒的挂钟时间。然而,在一个方法中,实际处理可能仅在 4 秒的用户时间内发生Servlet#service()
:
- 线程A中的第二个0-1,
Servlet#service()
方法返回,AsyncContext
开始 - 线程 B 中的第二个 10-11,
Servlet#service()
方法返回,AsyncContext
开始 - 线程 A 中的第二个 80-81,
Servlet#service()
方法返回,AsyncContext
开始 - 线程 C 中的第二个 99-100,
Servlet#service()
方法返回
我只对在这三个线程中为这四个持续时间生成事件感兴趣,然后将它们与单个请求相关联。
java - 如何清理 Java 飞行记录
我有一个想要分享的 Java 飞行记录。不幸的是,Java 飞行记录在系统属性和环境变量中包含用户名和密码(JMC 正确地警告了这一点)。有没有办法从 Java 飞行记录中删除所有系统属性和环境变量,以便我可以共享它?
trace - JFR.dump 失败。“在指定的时间间隔内没有数据”
执行时收到以下错误消息jcmd 115 JFR.dump name=continuous_recording
:
我使用以下配置开始录制:
可能是缓冲区尚未填充最小块大小。但是 JFR.check 命令不提供该信息。
更新:
如果我在不指定记录名称的情况下运行 JFR.dump,我可以从 Java 应用程序获取转储。我尝试用引号(转义和未转义)封装录音名称,并得到与以前相同的错误。
java - 命令行中的 Java Flight Recorder (JFR):[jfr] [ERROR] [1014.291] 关闭时无法删除存储库
我正在学习 Java Flight Recorder 用法java-flight-recorder-monitoring 的课程。
我从示例编译了一个java代码(添加class
并且imports
因为它没有编译它们):
然后我按照课程运行:
C:\Program Files\Java\jdk1.8.0_191\bin>java -XX:+UnlockCommercialFeatures -XX:+F lightRecorder -XX:StartFlightRecording=duration=200s,filename=c:\am\out\flight.j fr - cp c:\am\out TestFlightRecorder
之后立即输出:
开始录制 1. 结果将写入:
C:\AM\out\flight.jfr
java的Windows任务管理器中的内存使用量上升,然后超过200秒:
线程“主”java.lang.OutOfMemoryError 中的异常:TestFlightRecorder.main(TestFlightRecorder.java:12) 处的 Java 堆空间 [jfr][ERROR][1014.291] 关闭时无法删除存储库
结果flight.jfr
大小为 0 字节。(当我使用简单的 hello world java 类发出相同的命令时,flight.jfr 的创建大小为 125Kb,其中包含“空”信息——我猜这是因为应用程序运行得如此之快,飞行记录尚未开始——而这问题不在于那种空虚)。
对此类错误的网络搜索没有结果。为什么出错,我做错了什么来录制?
java - 为什么我有多个 JFR 录音?
掌握 Java Flight Recorder (JFR) 配置后,我有一个最合理的配置:
然而,使用JFR.check
表明我没有一个,而是两个正在进行的录音。
录音0是怎么发生的?
sonarqube - 运行 npm run sonar 时出现问题
我正在使用声纳分析 nodejs 代码,但是当我运行 npm run sonar 时出现此错误
当我用我的根用户运行命令时它工作正常。可能是什么原因?