前言: FE(Frontend)是 Apache Doris 集群架构中的“大脑”,负责元数据管理、查询解析和调度等关键任务。一旦 FE 出现问题,整个集群的稳定性和可用性将受到严重影响。因此,掌握 FE 故障定位与排查方法对于保障 Doris 运行至关重要。本文将结合官方文档与实际经验,系统梳理 FE 问题排查的完整路径。
在排查 Doris 问题时,理解 FE 元数据的组织方式非常重要。以下是官方提供的两篇核心文档,建议在遇到问题时首先阅读:
定位问题,第一步是“取证”。这里列出你在排查 FE 相关故障时必须要收集的文件与信息清单:
fe/log/)下的:fe.log:主日志,核心排查依据fe.audit.log:用户行为与 SQL 审计fe.gc.log:GC 详情,有助分析是否存在 GC pause 过长fe.out:FE 控制台日志,有时比 fe.log 更早打印异常栈(尤其是FE core的信息都在这里记录)fe/doris-meta/bdb/je.info.0)start_fe.sh --version 查看 commit IDSHOW FRONTENDS 获取当前所有 FE 节点状态与角色jstack -l <pid> 获取线程状态jmap -heap <pid> 查看堆内存分布jmap -histo:live <pid> 查看对象统计jmap -dump:file=xxx.hprof <pid> 获取内存镜像用于离线分析dmesg -T > dmesg.txt 查看操作系统层异常(看看是不是OOM)Insufficient acks for policy:SIMPLE_MAJORITY. Need replica acks: 1. Missing replica acks: 1
现象:FE 异常退出,日志出现 OOM 相关堆栈信息。
建议做法:
label_keep_max_second = 21600
streaming_label_keep_max_second = 21600
JAVA_OPTS="-Xmx8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
注意⚠️:Doris 2.1.x之后默认使用G1dmesg -T | grep -i java 查看 OOM 记录DiskLimitException、meta out of dateClock delta: xxx ms. between Feederjstack 查看是否存在死锁checkpoint 是否阻塞主线程/doris-meta/image/ 下 image 文件几十 GBSHOW FRONTENDS 执行缓慢工具 | 用途 |
|---|---|
jmap | 查看堆结构、对象统计、dump 内存镜像 |
jstack | 查看线程状态、排查死锁 |
GCEasy | 分析 GC 日志 |
[JProfiler / Eclipse MAT] | 分析 .hprof 文件,定位内存热点 |
Arthas | 在线火焰图分析、方法跟踪 |
FE 是 Apache Doris 的“心脏”,掌握其运行机制与问题排查路径,是数据库平台稳定运行的基础。建议在生产环境中部署完善的日志采集、监控系统,并对 GC 策略、内存设置等进行合理调优。如果你遇到 FE 崩溃、卡顿、无法启动等问题,不要轻易使用 recovery 方法拉起,请先查日志、取 dump、看指标,再分析、再修复。搞不定的话,可以联系社区同学,他们嘎嘎热心~