You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot高负载后JMC无法查看JFR中8000+异常详情求助

如何读取JFR中隐藏的异常详情

1. 用jfr print命令导出完整异常数据

这是绕过JMC UI限制最直接的方式,能直接提取所有异常事件的细节:

  • 导出所有异常事件到文本文件:
    jfr print --events Exception your-recording.jfr > exception-details.txt
    
  • 过滤被底层捕获的异常(对应你说的应用层无感知的情况):
    jfr print --events Exception --fields message,stackTrace,type,thread your-recording.jfr | grep -A 20 "uncaught=false"
    

输出内容会包含异常类型、错误消息、完整堆栈跟踪和触发线程,直接定位底层抛出的异常。

2. 调整JMC显示配置

JMC默认可能限制显示行数或隐藏关键字段,试试这些操作:

  • 打开Event Browser,找到jdk.Exception事件,右键选择View Event Data,在弹窗中调整显示行数上限,同时勾选stackTrace、message等字段。
  • 检查JMC偏好设置中的JFR过滤规则,确保没有屏蔽异常事件的细节信息。

3. 编程解析JFR文件

如果命令行和JMC都无法满足需求,用Java代码直接读取JFR文件:

import jdk.jfr.consumer.RecordedEvent;
import jdk.jfr.consumer.RecordingFile;
import java.nio.file.Paths;

public class JfrExceptionParser {
    public static void main(String[] args) throws Exception {
        try (RecordingFile rf = new RecordingFile(Paths.get(args[0]))) {
            while (rf.hasMoreEvents()) {
                RecordedEvent event = rf.readEvent();
                if ("jdk.Exception".equals(event.getEventType().getName())) {
                    System.out.printf("异常类型: %s%n", event.getValue("type"));
                    System.out.printf("异常消息: %s%n", event.getValue("message"));
                    System.out.printf("堆栈跟踪: %s%n", event.getValue("stackTrace"));
                    System.out.printf("是否未捕获: %b%n", event.getValue("uncaught"));
                    System.out.println("----------------------------------------");
                }
            }
        }
    }
}

编译运行时传入JFR文件路径,即可输出所有异常的完整信息。

4. 优化后续JFR录制配置

如果是录制时未捕获堆栈导致的无详情,下次录制时确保开启完整堆栈:

  • 命令行录制:
    jfr start --settings profile --stack-depth=256 --name=HighLoadRecording
    
  • Spring Boot配置文件中添加:
    jdk.jfr.configuration=profile
    jdk.jfr.stack-depth=256
    

内容的提问来源于stack exchange,提问作者Altug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:48:21