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.pswp.cn/web/76121.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76121.shtml
英文地址,請注明出處:http://en.pswp.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…