问题标签 [java-mission-control]
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 Flight Recording 不报告 Java Mission Control 中的死锁
我试图模拟一个死锁情况,我将使用 Java Flight Recorder 记录并使用 Java Mission Control 进行检查。
由于某种原因,阻塞的线程未在线程部分下标记为阻塞,Java 任务控制部分中的自动分析也不会报告死锁情况
同时,收集到的线程转储清楚地表明线程被阻塞并发现了 1 个死锁
我正在使用具有所有默认设置的标准“分析”指标预设。
我试图了解我在哪里做错了,这使得死锁情况在 Java Mission Control 中变得如此不明显
java - 转储部分 Java Flight Record
假设我使用以下标志为我的 JVM 配置了连续飞行记录
据我了解,此配置在热点事件的内存中最多存储 200mb,达到限制时丢弃最旧的。
要转储我正在使用JFR.dump
命令的记录,请通过jcmd
. 还有一种通过任务控制提取记录的替代方法,但由于其中的一个错误,我没有成功提取在任务控制的 JVM 之外运行的记录。令人惊讶的是,MBean 服务器管理工作正常。
无论如何,我看到可以通过任务控制通过“转储”功能指定从连续记录转储的间隔范围,例如从 2021-01-01 13:00:00 到 2021-01-01 14:00: 00. 假设当前时间为 2021-01-02 17:00:00。如何通过 指定相同的间隔JFR.dump
?查看JFR.dump参考,没有任何标志可以做到这一点。那么任务控制是如何做到的呢?
注意:我使用的是 JMC 8 和 Oracle JDK 11 0 10u8。
java - Java 任务控制在尝试分析正在运行的应用程序的堆转储时出错 - java.lang.Integer 无法转换为 com.'sometxt'.JavaHeapObject
眼镜:
- Java JDK 8u212,我也尝试将 8u91 添加到我的 JVM 文件夹中
- JMC 8.0.1、JMC 8 作为独立版本,都出现此错误 - 我使用这些作为默认的 JMC 在启动时冻结,这是一个已知错误(v. 7...?)
正如标题所述,当尝试在 Java 任务控制中的应用程序上运行堆转储时,我收到如下错误:
我不确定这意味着什么或该怎么做。我看到的所有其他 stackoverflow 帖子都与将字符串转换为整数或类似的东西有关。这似乎不同。另外,很遗憾,我无法发布代码,因为它属于我的公司,但我可以说的是,这东西已经投入生产一段时间了,所以代码不太可能是坏的。
如果您需要更多信息,请告诉我。
java - java - 如何使用java任务控制找到最耗时的方法?(不是专门的 CPU)
我有一个在 tomcat 8.5 上运行的 spring 批处理应用程序。这批处理大量数据,例如一千万条记录,而且速度太慢。我想找到最耗时的部分,例如数据库查询 EG、套接字 IO、线程阻塞或等待、CPU 消耗或可能会减慢应用程序速度的垃圾收集。我对 jdbc 查询 EG、套接字 IO 大多持怀疑态度。我尝试使用本地分区来扩展它并为 tomcat 提供更多内存并增加 spring 批处理设置中的提交间隔。我查看了 Jmc 中的 socketIO 选项卡并记录了它显示的一种方法的执行时间,但它只需要 15 到 30 毫秒。另一个问题是 Jmc 只显示百分比而不是确切的时间。所以,我无法弄清楚需要多长时间。我有点困惑。
提前非常感谢。
java - 在 Docker 中将 Java Mission Control 连接到 Flink App
我正在尝试使用--scale
docker-compose 选项在几个基于 docker 的 Flink 任务管理器中公开 JMX,以便与 Java Mission Control 一起使用。(例如 docker-compose docker/flink-job-cluster.yml up -d --scale taskmanager=2
)
我的基本问题是,即使我已经配置了 jmx,
然后像这样映射 docker-compose 文件中的端口,
我无法使用任何端口将 Java Mission Control 连接到任务管理器。例如localhost:10000
或localhost:10001
等等。但是我可以使用连接到作业localhost:9999
管理器,并且如果我单独明确设置端口,我只能连接到任务管理器。不使用 docker-compose 文件中的动态端口映射。理想情况下,端口映射会起作用,所以我可以继续使用--scale
docker-compose 的命令。