Doris FE 常见问题与处理指南

在数据仓库领域,Apache Doris 凭借其卓越性能与便捷性被广泛应用。其中,FE(Frontend)作为核心组件,承担着接收查询请求、管理元数据等关键任务。然而,在实际使用中,FE 难免会遭遇各类问题,影响系统的正常运行与性能表现。本文将深入剖析 Doris FE 常见问题及其处理办法。
在这里插入图片描述

一、定位 FE 问题的关键信息

当 FE 出现问题时,精准定位是解决问题的首要步骤。首先,需关注出问题前后 1 天左右的日志,若为多节点部署,每个节点的相关日志都至关重要。这些日志包括:

  • fe/log目录下的fe.log(记录 FE 运行的关键事件与错误信息)、fe.audit.log(审计日志,可用于追踪操作记录)、fe.gc.log(垃圾回收日志,对分析内存问题有重要参考价值)以及fe.out(包含fe启动和宕机的相关信息)。

  • fedoris - metabdbje.info.0(bdbje 日志,其打印时间为 UTC 时间,需注意加上 8 小时转换为北京时间)。

  • 精确到 commit 号的版本信息,可通过执行start_fe.sh --version在控制台输出或fe.out中获取。

  • show frontends的全部输出,能展示 FE 节点的详细状态信息。

  • 若有 prometheus 监控,还需提供如 jvm heap 堆内存使用情况、线程数量、导入 job 数量、checkpoint 失败次数等监控数据。

  • 当 FE 卡住时,需通过jstack -l $(pid)> jstack txt搜集 jstack 信息;若内存使用高达数十 GB,则需jmap信息。

  • 机器的 cpu、内存、磁盘 io、网络的 promethues 监控情况,排查是否存在 cpu 打满、物理内存耗尽、磁盘 io 秒级延迟、网络丢包等问题。

  • dmesg -T > dmesg txt信息,常用于定位FE OOM的问题。

二、FE 常见问题解析与应对

(一)FE 挂掉

master 节点写达不成多数派挂
Insufficient acks for policy:SIMPLE_MAJORITY. Need replica acks: 1. Missing replica acks: 1

原因

  1. 内存使用过高,可能是 cms 垃圾回收器遭遇 “promotion failed” 或者 “concurrent mode failure”,此时需排查内存使用情况,可通过jmapdump 内存镜像并用jprofiler进行分析(搞不了的话,可以联系社区同学协助分析)。

  2. 多节点环境下,若其他节点状态逻辑错误已死掉,仅剩一个 master 节点,需同时查看其他 fe 节点日志,确认其存活状态与是否有异常退出栈。

  3. 某些节点机器的物理资源(cpu、内存、io)存在瓶颈,需查看机器相应监控。

  4. master 因 gc 或者 io 写 io 消耗时间太长,如在je.info.0中出现类似日志

2025 - 03 - 04 01:27:00.165 UTC WARNING [fe_026093bb_658d_41dc_8f8b_96bd5a968c24] FSync time of 106698 ms exceeds limit (5000 ms)” 的日志。
fe 堆内存 OOM

现象与处理fe.out中会有相应打印,出现该情况需分析 fe jvm 堆内存占用情况。 需要在后续内存高的时候dump内存出来,具体分析一下

几种常见的oom场景见下文 “fe内存问题”

操作系统 oom 杀掉 java 进程

原因:机器上其他进程占据过多内存,致使 fe 无法获取 jvm - Xmx 配置的堆内存,操作系统启动 oom - killer 线程杀掉 fe。

排查方法:通过dmesg -T | grep -i java查看日志信息,

(二)FE 内存问题

堆内存内存高,遇到 gc 降级,master pause 太长时间,导致 fe 挂

场景:尤其在高频导入情况下,事务和 LoadJbb 占内存多,其他 follower 重新选举后,原 master 退出,新接任的 master 节点重复出现该问题。

解决办法

  1. 配置label 保留参数:
label_keep_max_second = 21600 // 6 hour
streaming_label_keep_max_second = 21600  // 6 hour
  1. 修改FE JVM 的 gc算法为g1,参考如下
JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false -Xmx8g -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$LOG_DIR/log/fe.gc.log.$DATE -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Dlog4j2.formatMsgNoLookups=true"
schema change job 数量多

影响:可能导致 fe com 或者出现上述堆内存高的情况(较新版本有优化)。

误开 profile 或者 profile 功能存在 bug(2.0.2版本之后已经优化了)
cms 垃圾回收器回收不及时

现象:待回收临时对象多,导致内存使用高,遇到 gc 降级 fe 挂,内存使用量监控呈锯齿状,类似下图(同堆内存高问题,新版本改为 g1 回收器)。

(三)FE 启动不起来

meta out of date 或者 wait catalog to be ready

原因

  1. 磁盘空间不足,bdbje 禁止写入,出现 “com.sleepycat je.DiskLimitException” 错误。

  2. meta out of date 偶尔打印一次属正常,可调参数。meta_delay_toleration_second 默认值 300(5 分钟),元数据延迟间隔时间。

启动时打印少数几次 meta out of date,随后不再打印,也为正常现象。

时钟不同步:

如出现 “Clock delta: xxxx ms.between Feeder” 类似的日志

this Replica exceeds max permissible delta: 5000 ms. HANDSHAKE_ERROR: Error during the handshake between two nodes. Some validity or compatibility check failed, preventing further communication between the nodes

这是节点间时钟不同步,需要校正时钟。

doris fe 代码 bug(序列化 / 反序列化问题 / NullPointerException)等。

已经修复了,修复pr(推荐升级):

https://github.com/apache/doris/pull/26563

https://github.com/apache/doris/pull/30337

https://github.com/apache/doris/pull/30441

doris fe 非主节点写 editlog 导致

类似下图这种,已经修复(推荐升级):https://github.com/apache/doris/pull/29395

运维操作不当
  1. 做了降级操作,高版本的 doris - meta 元数据用低版本的 jar 包启动。比如报错这种(仅供参考):
Unknown meta module: workloadSchedPolicy
  1. 升级操作 jar 替换不全或未清理旧版本 jar 包。比如报错(仅供参考):
“java.lang.NoSuchMethodError: 'com.google.gson.GsonBuilder com.google.gson.GsonBuilder.addReflectionAccessFilter”
长时间 checkpoint 失败导致重新启动慢

可通过ls doris-meta/image -l查看最近 checkpoint 成功的时间,正常情况下 10 分钟会有一次成功的 checkpoint。

(四)doris - meta/bdb 目录大(几十 GB)

需先检查所有节点状态是否正常,master 近期是否做 checkpoint,内存使用超过 jvm heap 70% 不做 checkpoint(可通过grep -i "checkpoint' fe.log.xxx排查),master 做完 checkpoint 是否 push image 到其他节点成功,是否因 image 过大导致 push image timeout。fe.log里面会有类似日志:

 [Checkpoint.doCheckpoint():210] Failed when pushing image file. 

(五)doris - meta/image/image.xxx 文件大(几十 GB)

导入 label 比较多,没有及时删除,可以参考前面的参数进行调整

ccr bin log 占的多:旧版本的ccr默认的 disable binlog 不会清空已经记录的 binlog , 主要还是 ttl_seconds 没有设置,disable 的时候仍然需要依靠 ttl_seconds 来回收。

解决方法:
旧版本把之前开过 binlog 的表都设置一下 “binlog.enable” = “true”,再设置 “binlog.ttl_seconds” 为一个合理的值。或者直接升级到最新稳定版本

(六)FE 卡住死锁(jmap dump fe 内存镜像)

1. 高并发点查把 cpu 打满后,连带导致内存高占用:在监控中会呈现 CPU 和内存先后升高的趋势。

2. 内存本身高占用,故障时间点做 checkpoint 需要近 1 倍内存:在fe.log搜索checkpoint关键词,类似下面的日志:

 the memory used percent 73 exceed the checkpoint memory threshold: 70, exceeded count: 1”“2024 - 09 - 06 23:16:14,959 INFO (leader Checkpointer (99) [Checkpoint do Checkpoint () :124] begin to generate new image: image.8745633

3. 大查询解析过程把 fe 打满:表现为 CPU 升高。

(七)FE show frontends慢

show frontends 返回耗时很长

  1. 已知的域名解析问题,每个机器hosts文件都加上所有fe节点的域名和ip对应关系就可以了。
  2. 注意/etc/resolv.conf文件内容,里面是否有云平台厂商预置了个DNS设置。

在使用 Doris FE 过程中,遇到问题不要怕,关键是要掌握正确的定位与解决方法。通过对各类常见问题的深入分析,结合上述详细的处理指南,相信大家能够更高效地保障 Doris 系统的稳定运行,充分发挥其在数据处理与分析中的强大效能,如果还有其他相关问题欢迎补充讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity编辑器扩展之项目资源查找工具

一、需要实现的效果如下: 二、在项目的Asset目录下新增Editor目录,新增AssetSearchWindow和EditorDefine和EditorTools这三个C#脚本,并复制以下的代码保存好之后,就可以实现上述功能啦。 -------------------------------------------EditorTools脚本Begin----------------…

《Java 泛型的作用与常见用法详解》

大家好呀!👋 今天我们要聊的是Java中一个超级重要但又让很多初学者头疼的概念——泛型(Generics)。带你彻底搞懂它!💪 准备好你的小本本,我们开始啦~📝 一、为什么需要泛型?&#x…

USB(TYPE-C)转串口(TTL)模块设计讲解

目录 一 、引言 二、方案设计 三、USB TYPE-C介绍 1、TYPE-C接口定义 1、24P全引脚描述 2、Type C 接口 VBUS/GND 作用 3、Type C 接口 D/D- 作用 1、数据传输: 2、设备识别: 3、充电协议协商: 4、Type C 接口 CC1/CC2 作用 1、主从设备区…

v-model进阶+ref+nextTick

一、v-model进阶 复习 v-model v-model: 双向数据绑定指令 数据 <-> 视图: 数据和视图相互影响, 因此被称为双向数据绑定指令 1> 数据变了, 视图也会跟着变 (数据驱动视图) 2> 视图变了, 数据也会跟着变 1. v-model 原理 v-model只是一个语法糖, 比较好用, …

Sentinel源码—4.FlowSlot实现流控的原理二

大纲 1.FlowSlot根据流控规则对请求进行限流 2.FlowSlot实现流控规则的快速失败效果的原理 3.FlowSlot实现流控规则中排队等待效果的原理 4.FlowSlot实现流控规则中Warm Up效果的原理 3.FlowSlot实现流控规则中排队等待效果的原理 (1)实现排队等待流控效果的普通漏桶算法介…

2025华中杯数学建模B题完整分析论文(共42页)(含模型、数据、可运行代码)

2025华中杯大学生数学建模B题完整分析论文 目录 一、问题重述 二、问题分析 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1解析 4.1.2问题1模型建立 4.1.3问题1样例代码&#xff08;仅供参考&#xff09; 4.1.4问题1求解结果&#xff08;仅供参考&am…

Project ERROR: liblightdm-qt5-3 development package not found问题的解决方法

问题描述&#xff1a;使用make命令进行ukui-greeter-Debian构建时出现Project ERROR: liblightdm-qt5-3 development package not found错误&#xff0c;具体如图&#xff1a; 问题原因&#xff1a;缺乏liblightdm-qt5-3 development软件包 解决方法&#xff1a;安装liblightd…

【C++面向对象】封装(下):探索C++运算符重载设计精髓

&#x1f525;个人主页 &#x1f525; &#x1f608;所属专栏&#x1f608; 每文一诗 &#x1f4aa;&#x1f3fc; 年年岁岁花相似&#xff0c;岁岁年年人不同 —— 唐/刘希夷《代悲白头翁》 译文&#xff1a;年年岁岁繁花依旧&#xff0c;岁岁年年看花之人却不相同 目录 C运…

从代码学习深度学习 - Transformer PyTorch 版

文章目录 前言1. 位置编码(Positional Encoding)2. 多头注意力机制(Multi-Head Attention)3. 前馈网络与残差连接(Position-Wise FFN & AddNorm)3.1 基于位置的前馈网络(PositionWiseFFN)3.2 残差连接和层规范化(AddNorm)4. 编码器(Encoder)4.1 编码器块(Enco…

阅读分析Linux0.11 /boot/head.s

目录 初始化IDT、IDTR和GDT、GDTR检查协处理器并设置CR0寄存器初始化页表和CR3寄存器&#xff0c;开启分页 初始化IDT、IDTR和GDT、GDTR startup_32:movl $0x10,%eaxmov %ax,%dsmov %ax,%esmov %ax,%fsmov %ax,%gslss _stack_start,%espcall setup_idtcall setup_gdtmovl $0x1…

33、单元测试实战练习题

以下是三个练习题的具体实现方案&#xff0c;包含完整代码示例和详细说明&#xff1a; 练习题1&#xff1a;TDD实现博客评论功能 步骤1&#xff1a;编写失败测试 # tests/test_blog.py import unittest from blog import BlogPost, Comment, InvalidCommentErrorclass TestBl…

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09;349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a;输入&#xff1a;nu…

SciPy库详解

SciPy 是一个用于数学、科学和工程计算的 Python 库&#xff0c;它建立在 NumPy 之上&#xff0c;提供了许多高效的算法和工具&#xff0c;用于解决各种科学计算问题。 CONTENT 1. 数值积分功能代码 2. 优化问题求解功能代码3. 线性代数运算功能代码 4. 信号处理功能代码 5. 插…

杰弗里·辛顿:深度学习教父

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 杰弗里辛顿&#xff1a;当坚持遇见突破&#xff0c;AI迎来新纪元 一、人物简介 杰弗…

BladeX单点登录与若依框架集成实现

1. 概述 本文档详细介绍了将BladeX认证系统与若依(RuoYi)框架集成的完整实现过程。集成采用OAuth2.0授权码流程&#xff0c;使用户能够通过BladeX账号直接登录若依系统&#xff0c;实现无缝单点登录体验。 2. 系统架构 2.1 总体架构 #mermaid-svg-YxdmBwBtzGqZHMme {font-fa…

初识Redis · set和zset

目录 前言&#xff1a; set 基本命令 交集并集差集 内部编码和应用场景 zset 基本命令 交集并集差集 内部编码和应用场景 应用场景&#xff08;AI生成&#xff09; 排行榜系统 应用背景 设计思路 热榜系统 应用背景 设计思路 热度计算方式 总结对比表 前言&a…

playwright 教程高级篇:掌握网页自动化与验证码处理等关键技术详解

Playwright 教程高级篇:掌握网页自动化与验证码处理等关键技术详解 本教程将带您一步步学习如何使用 Playwright——一个强大的浏览器自动化工具,来完成网页任务,例如提交链接并处理旋转验证码。我们将按照典型的自动化流程顺序,从启动浏览器到关闭浏览器,详细讲解每个步骤…

数据结构(完)

树 二叉树 构建二叉树 int value;Node left;Node right;public Node(int val) {valueval;} 节点的添加 Node rootnull;public void insert(int num) {Node nodenew Node(num);if(rootnull) {rootnode;return;}Node index root;while(true) {//插入的节点值小if(index.value&g…

FastAPI与SQLAlchemy数据库集成与CRUD操作

title: FastAPI与SQLAlchemy数据库集成与CRUD操作 date: 2025/04/16 09:50:57 updated: 2025/04/16 09:50:57 author: cmdragon excerpt: FastAPI与SQLAlchemy集成基础包括环境准备、数据库连接配置和模型定义。CRUD操作通过数据访问层封装和路由层实现,确保线程安全和事务…

一个基于Django的写字楼管理系统实现方案

一个基于Django的写字楼管理系统实现方案 用户现在需要我用Django来编写一个写字楼管理系统的Web版本&#xff0c;要求包括增删改查写字楼的HTML页面&#xff0c;视频管理功能&#xff0c;本地化部署&#xff0c;以及人员权限管理&#xff0c;包含完整的代码结构和功能实现&am…