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

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

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

說明

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

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

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

1 compaction score高

找出score最高的若干個(gè)tablet,一般是用戶比較高頻導(dǎo)入的表

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

1.1 compaction持續(xù)失敗導(dǎo)致的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é)進(jìn)行處理

1.2 用戶使用不當(dāng)

1.2.1 建表時(shí),bucket數(shù)量設(shè)置的不合適。

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

設(shè)置的太多,可能會有比較多的compaction任務(wù)調(diào)度。

建議根據(jù)tablet 1GB - 10GB的最佳實(shí)踐,設(shè)置bucket數(shù)量

其他使用不當(dāng)?shù)姆绞?,待補(bǔ)充…

1.3 compaction策略問題

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

判斷方式:

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

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

處理方式:

1 臨時(shí)處理手段,手動(dòng)觸發(fā)compaction:

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

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

Compaction score的監(jiān)控

Compaction score從低到高漲上來時(shí)BE的日志

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

1.4 導(dǎo)入速度超過了compaction的速度

這里又分為兩種情況

1.4.1 cpu負(fù)載不高

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

max_base_compaction_threads 默認(rèn)是4
max_cumu_compaction_threads 默認(rèn)是每個(gè)盤1個(gè)
compaction_task_num_per_disk,默認(rèn)是4
compaction_task_num_per_fast_disk,默認(rèn)是8

判斷方式:

1 查看compaction 一段時(shí)間內(nèi)的平均并發(fā)數(shù)

cloud使用這個(gè)命令

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使用這個(gè)命令

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)計(jì)一段時(shí)間內(nèi)compaction的總耗時(shí)(注意,cloud統(tǒng)計(jì)出的耗時(shí)單位是毫秒,而社區(qū)統(tǒng)計(jì)出的耗時(shí)單位是秒)。比如耗時(shí)是4000秒
  • 計(jì)算統(tǒng)計(jì)的clock time,比如統(tǒng)計(jì)的日志文件包含14:00 到 14:20日志,那clock time = 20min * 60 = 1200秒
  • compaction的平均并發(fā) 4000 / 1200 = 3.3 并發(fā)

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

1.4.2 cpu負(fù)載比較高

處理方式:

1 如果BE的負(fù)載比較高,且用戶的導(dǎo)入比較高頻,看下能否攢批導(dǎo)入,降低導(dǎo)入頻率

2 如果導(dǎo)入頻率也不高,則需要考慮擴(kuò)容

1.5 compaction score持續(xù)升高,導(dǎo)致導(dǎo)入報(bào)-235

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

2 Compaction 失敗

2.1 定位問題

通過grep compaction be.INFO | grep {tablet_id} 查看compaction失敗的具體原因。
原因包括但不限于,內(nèi)存分配失敗,compaction數(shù)據(jù)校驗(yàn)失敗

2.1.1 內(nèi)存問題

內(nèi)存分配失敗會有類似一下日志

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]

內(nèi)存問題又分為以下幾種情況

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

對于上述細(xì)分的原因需要查看memtracker,當(dāng)前compaction內(nèi)存使用的情況來定位。

2.1.2 compaction校驗(yàn)失敗

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 內(nèi)存問題

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

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

細(xì)分原因2:單個(gè)compaction占用內(nèi)存多

可以暫時(shí)通過限制參與compaction的rowset個(gè)數(shù)來限制compaction的使用,調(diào)節(jié)BE的cumulative_compaction_max_deltas這個(gè)配置值,默認(rèn)是1000

細(xì)分原因3:多個(gè)compaction占用內(nèi)存多

可以暫時(shí)通過限制參與compaction的rowset個(gè)數(shù)來限制compaction的使用,調(diào)節(jié)BE的cumulative_compaction_max_deltas這個(gè)配置值,默認(rèn)是1000
或者:

可以通過限制compaction線程的個(gè)數(shù)來限制內(nèi)存,be對應(yīng)配置,max_base_compaction_threads和max_cumu_compaction_threads

2.2.2 compaction 校驗(yàn)失敗

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

3 compaction占用資源多

3.1 compaction占用cpu資源多

top -H 確認(rèn)是否是compaction線程

處理方式

處理方式1

可以調(diào)整做compaction的線程數(shù)量

max_base_compaction_threads,默認(rèn)是4 
 max_cumu_compaction_threads,默認(rèn)每塊盤1個(gè)

處理方式2

可以調(diào)整每個(gè)盤上compaction的并發(fā)數(shù)量

如果配置的是HDD盤,調(diào)整compaction_task_num_per_disk,
如果配置的是SSD盤,調(diào)整compaction_task_num_per_fast_disk
compaction_task_num_per_disk,默認(rèn)是4
compaction_task_num_per_fast_disk,默認(rèn)是8

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

3.2 compaction占用內(nèi)存資源多

參考第二節(jié)關(guān)于內(nèi)存超限導(dǎo)致compaction失敗的處理方式

4 compaction導(dǎo)致BE core

分情況處理

偶發(fā)一次:

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

持續(xù)失敗:

這種情況可能會影響用戶的可用性,可以先止損。關(guān)掉這個(gè)表的compaction

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

2 關(guān)閉這個(gè)BE的compaction,配置BE.conf disable_auto_compaction = true

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

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

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

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

相關(guān)文章

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

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

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

    Linux中g(shù)pio接口的使用方法示例

    這篇文章主要給大家介紹了關(guān)于Linux中g(shù)pio接口的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    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)境的安裝和配置等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • linux服務(wù)器被植入ddgs、qW3xT.2挖礦病毒的處理實(shí)戰(zhàn)記錄

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

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

    CenterOS 中安裝Redis及開機(jī)啟動(dòng)設(shè)置詳解

    這篇文章主要介紹了CenterOS 中安裝Redis及開機(jī)啟動(dòng)設(shè)置詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 詳解 Linux中的關(guān)機(jī)和重啟命令

    詳解 Linux中的關(guān)機(jī)和重啟命令

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

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

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

    Linux密碼復(fù)雜度設(shè)置及登錄失敗策略設(shè)置方式

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

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

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

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

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

最新評論