欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Apache?Doris?中Compaction問題分析和典型案例分析

 更新時間:2024年08月20日 10:42:09   作者:Faith_xzc  
這篇文章主要介紹了Apache?Doris?中Compaction問題分析和典型案例,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

說明

此文檔主要說明一些常見compaction問題的排查思路和臨時處理手段。這些問題包括

  • Compaction socre高
  • Compaction失敗
  • compaction占用資源多
  • Compaction core

如果問題緊急,可聯(lián)系社區(qū)同學處理
如果閱讀中有問題,可以反饋給社區(qū)同學。

1 compaction score高

找出score最高的若干個tablet,一般是用戶比較高頻導入的表

分析score最高的tablet形成的原因,以下幾個為常見的原因

1.1 compaction持續(xù)失敗導致的compaction socre高

判斷方式:
1 grep ${tablet_id} be.INFO | grep compaction,看是否有持續(xù)失敗的日志

2 curl ip:port/api/compaction/show?tablet_id=${tablet_id} ,可以看curl命令查看compaction status,目前只有base的status。

處理方式:參照第2節(jié)進行處理

1.2 用戶使用不當

1.2.1 建表時,bucket數量設置的不合適。

設置的太小,導致的compaction可能不能充分并發(fā)執(zhí)行。

設置的太多,可能會有比較多的compaction任務調度。

建議根據tablet 1GB - 10GB的最佳實踐,設置bucket數量

其他使用不當的方式,待補充…

1.3 compaction策略問題

score很高的tablet,卻很久沒有執(zhí)行過compaction

判斷方式:

1 通過curl ip:port/api/compaction/show?tablet_id=${tablet_id} 查看tablet compaction上一次執(zhí)行的時間。

2 grep ${tablet_id} be.INFO | grep compaction,看該tablet compaction執(zhí)行的歷史,是否該tablet很長時間沒有進行compaction

處理方式:

1 臨時處理手段,手動觸發(fā)compaction:

curl -X POST http://be_host:webserver_port/api/compaction/run?tablet_id=xxxx&compact_type=cumulative

2 這類問題可能是策略的bug,需要聯(lián)系社區(qū)同學跟進處理,需要以下信息

Compaction score的監(jiān)控

Compaction score從低到高漲上來時BE的日志

Compaction score比較高的tablet的rowset 布局,通過curl ip:port/api/compaction/show?tablet_id=${tablet_id} 可以拿到

1.4 導入速度超過了compaction的速度

這里又分為兩種情況

1.4.1 cpu負載不高

可能是compaction的并發(fā)不夠,需要調整下面這些配置(根據情況修改)

max_base_compaction_threads 默認是4
max_cumu_compaction_threads 默認是每個盤1個
compaction_task_num_per_disk,默認是4
compaction_task_num_per_fast_disk,默認是8

判斷方式:

1 查看compaction 一段時間內的平均并發(fā)數

cloud使用這個命令

grep -i compaction be.INFO | grep -i finish | awk '{print $8}' | awk -F\| '{print $1}' | awk -Fms '{print $1}' | awk -F= '{sum+=$2} END {print sum}'

開源doris使用這個命令

cat be/log/be.INFO | grep -E "succeed to do base compaction|succeed to do cumulative compaction" | awk '{print $23}' | awk -F= '{print $2}' | awk -Fs '{sum+=$1} END {print sum}'
  • 用上述的命令統(tǒng)計一段時間內compaction的總耗時(注意,cloud統(tǒng)計出的耗時單位是毫秒,而社區(qū)統(tǒng)計出的耗時單位是秒)。比如耗時是4000秒
  • 計算統(tǒng)計的clock time,比如統(tǒng)計的日志文件包含14:00 到 14:20日志,那clock time = 20min * 60 = 1200秒
  • compaction的平均并發(fā) 4000 / 1200 = 3.3 并發(fā)

2 獲取BE的配置的并發(fā)限制和compaction線程數量,查看BE conf,如果沒有配置則為默認
如果實際的并發(fā)已經接近設置的并發(fā),則是并發(fā)不足

1.4.2 cpu負載比較高

處理方式:

1 如果BE的負載比較高,且用戶的導入比較高頻,看下能否攢批導入,降低導入頻率

2 如果導入頻率也不高,則需要考慮擴容

1.5 compaction score持續(xù)升高,導致導入報-235

這種現(xiàn)象之前出現(xiàn)的比較多,單獨列出來,這是一個現(xiàn)象,原因可能還是上述的一種,針對此現(xiàn)象有一個臨時的處理手段,如果對報-235的表沒有頻繁的導入和查詢,可以適當調大max_tablet_version_num。這只是一個臨時手段,還是要找到compaction score升高的原因
max_tablet_version_num,默認值是2000

2 Compaction 失敗

2.1 定位問題

通過grep compaction be.INFO | grep {tablet_id} 查看compaction失敗的具體原因。
原因包括但不限于,內存分配失敗,compaction數據校驗失敗

2.1.1 內存問題

內存分配失敗會有類似一下日志

W0427 19:40:58.254163 7873 compaction.cpp:372] fail to do CloudBaseCompaction. res=[MEM_LIMIT_EXCEEDED]PreCatch error code:11, [E11] Allocator sys memory check failed: Cannot alloc:5148, consuming tracker:<BaseCompaction:135202205>, peak used 1435738416, current used 1164740816, exec node:<>, process memory used 105.03 GB exceed limit 109.63 GB or sys available memory 11.71 GB less than low water mark 12.18 GB.
no enable stack, _FILE:/home/ec2-user/selectdb-core/be/src/olap/rowset/segment_v2/segment_iterator.cpp, __LINE:2000, __FUNCTION_:auto doris::segment_v2::SegmentIterator::next_batch(vectorized::Block *)::(anonymous class)::operator()() const, tablet=135202205.758764227.6e8b36c0cc1b4ac2-9f14bb5b6d058fe6, output_version=[2-8237]

內存問題又分為以下幾種情況

  • compaction本身占用內存不多,BE其他的請求(比如導入,查詢)占用了過多的內存,導致的compaction偶發(fā)失敗。
  • 單個compaction占用內存多
  • 多個compaction占用內存多

對于上述細分的原因需要查看memtracker,當前compaction內存使用的情況來定位。

2.1.2 compaction校驗失敗

if (_input_row_num != _output_rowset->num_rows() + _stats.merged_rows + _stats.filtered_rows) {
        return Status::Error<CHECK_LINES_ERROR>(
                "row_num does not match between cumulative input and output! tablet={}, "
                "input_row_num={}, merged_row_num={}, filtered_row_num={}, output_row_num={}",
                _tablet->tablet_id(), _input_row_num, _stats.merged_rows, _stats.filtered_rows,
                _output_rowset->num_rows());
    }

2.2 處理方式

2.2.1 內存問題

細分原因1:compaction本身占用內存不多,BE其他的請求(比如導入,查詢)占用了過多的內存,導致的compaction偶發(fā)失敗。

本身問題不在compaction,可以觀察下,如何compaction不是持續(xù)的失敗,并且compaction score沒有明顯的身高,可以暫不處理,持續(xù)觀察。

細分原因2:單個compaction占用內存多

可以暫時通過限制參與compaction的rowset個數來限制compaction的使用,調節(jié)BE的cumulative_compaction_max_deltas這個配置值,默認是1000

細分原因3:多個compaction占用內存多

可以暫時通過限制參與compaction的rowset個數來限制compaction的使用,調節(jié)BE的cumulative_compaction_max_deltas這個配置值,默認是1000
或者:

可以通過限制compaction線程的個數來限制內存,be對應配置,max_base_compaction_threads和max_cumu_compaction_threads

2.2.2 compaction 校驗失敗

可能是正確性問題,需聯(lián)系社區(qū)同學定位處理

3 compaction占用資源多

3.1 compaction占用cpu資源多

top -H 確認是否是compaction線程

處理方式

處理方式1

可以調整做compaction的線程數量

max_base_compaction_threads,默認是4 
 max_cumu_compaction_threads,默認每塊盤1個

處理方式2

可以調整每個盤上compaction的并發(fā)數量

如果配置的是HDD盤,調整compaction_task_num_per_disk,
如果配置的是SSD盤,調整compaction_task_num_per_fast_disk
compaction_task_num_per_disk,默認是4
compaction_task_num_per_fast_disk,默認是8

調節(jié)完,要主要觀察compaction score的變化,防止出現(xiàn)compaction并發(fā)限制的太小,導致的compaction score升高的問題

3.2 compaction占用內存資源多

參考第二節(jié)關于內存超限導致compaction失敗的處理方式

4 compaction導致BE core

分情況處理

偶發(fā)一次:

收集be.out,BE.info,core dump,be版本信息(包括具體的commit id),判斷是否有特殊的操作,比如scheam change等操作,然后聯(lián)系社區(qū)同學

持續(xù)失敗:

這種情況可能會影響用戶的可用性,可以先止損。關掉這個表的compaction

1 先通過導致compaction的tablet id找到表,show tablet {tablet_id}命令可以找到表名

2 關閉這個BE的compaction,配置BE.conf disable_auto_compaction = true

3 關掉這個表的compaction,alter table ${tableName} set (“disable_auto_compaction” = “true”)

4 打開BE的compaction,配置BE.conf disable_auto_compaction = false

雖然core在compaction的棧上,但是很可能不是compaction的問題,因為compaction是一個后臺的不斷進行的讀寫線程,不斷的觸發(fā)讀寫。很可能查詢也會core,只是沒有進行查詢,所以通過compaction暴露了這個問題。對于此類core,需要聯(lián)系社區(qū)的同學定位處理。

到此這篇關于Apache Doris 中Compaction問題分析和典型案例的文章就介紹到這了,更多相關Apache Doris 中Compaction內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用autoconf生成Makefile并編譯工程的步驟

    使用autoconf生成Makefile并編譯工程的步驟

    今天小編就為大家分享一篇關于使用autoconf生成Makefile并編譯工程的步驟,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Linux中gpio接口的使用方法示例

    Linux中gpio接口的使用方法示例

    這篇文章主要給大家介紹了關于Linux中gpio接口的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • CentOS 6.3編譯安裝LAMP環(huán)境筆記

    CentOS 6.3編譯安裝LAMP環(huán)境筆記

    這篇文章主要介紹了CentOS 6.3編譯安裝LAMP環(huán)境筆記,本文從系統(tǒng)安裝講解,涵蓋了系統(tǒng)、LAMP環(huán)境的安裝和配置等內容,需要的朋友可以參考下
    2014-09-09
  • linux服務器被植入ddgs、qW3xT.2挖礦病毒的處理實戰(zhàn)記錄

    linux服務器被植入ddgs、qW3xT.2挖礦病毒的處理實戰(zhàn)記錄

    這篇文章主要給大家介紹了關于linux服務器被植入ddgs、qW3xT.2挖礦病毒的處理的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧
    2018-09-09
  • CenterOS 中安裝Redis及開機啟動設置詳解

    CenterOS 中安裝Redis及開機啟動設置詳解

    這篇文章主要介紹了CenterOS 中安裝Redis及開機啟動設置詳解的相關資料,需要的朋友可以參考下
    2016-12-12
  • 詳解 Linux中的關機和重啟命令

    詳解 Linux中的關機和重啟命令

    這篇文章主要介紹了詳解 Linux中的關機和重啟命令的相關資料,希望通過此文能幫助到大家掌握這部分內容,需要的朋友可以參考下
    2017-08-08
  • Linux編譯優(yōu)化必須掌握的幾個姿勢總結

    Linux編譯優(yōu)化必須掌握的幾個姿勢總結

    內核是操作系統(tǒng)的核心,也是操作系統(tǒng)最基本的部分。下面這篇文章主要給大家總結介紹了關于Linux編譯優(yōu)化必須掌握的幾個姿勢,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-09-09
  • Linux密碼復雜度設置及登錄失敗策略設置方式

    Linux密碼復雜度設置及登錄失敗策略設置方式

    本文主要講述了如何在Ubuntu和CentOS系統(tǒng)中設置密碼規(guī)則、安裝crackilib模塊、修改PAM配置文件以增強安全性和限制登錄失敗次數等措施,以提高系統(tǒng)的安全性
    2024-12-12
  • centos安裝jdk1.8時出現(xiàn)沒有/lib/ld-linux.so.2:這個文件的原因分析

    centos安裝jdk1.8時出現(xiàn)沒有/lib/ld-linux.so.2:這個文件的原因分析

    這篇文章主要介紹了centos安裝jdk1.8時出現(xiàn)沒有/lib/ld-linux.so.2:這個文件的原因分析,通過使用一個簡單的命令可以幫助我們解決,需要的朋友跟隨腳本之家小編一起看看吧
    2018-08-08
  • CentOS 7使用samba共享文件夾的完整步驟

    CentOS 7使用samba共享文件夾的完整步驟

    這篇文章主要給大家介紹了關于CentOS 7使用samba共享文件夾的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07

最新評論