全部產品
Search
文件中心

E-MapReduce:記憶體管理

更新時間:Jul 01, 2024

本文為您介紹StarRocks BE(Backend)中記憶體使用量分類、記憶體配置以及如何查看記憶體使用量。

記憶體分類

您可以在E-MapReduce控制台目的地組群的叢集服務頁面,STARROCKS服務的配置頁面的be.conf頁簽,新增或修改BE相關配置,具體操作請參見管理配置項

標識

Metric名稱

描述

BE相關配置

process

starrocks_be_process_mem_bytes

BE進程實際使用的記憶體(不包含預留的空閑記憶體)。

mem_limit

query_pool

starrocks_be_query_mem_bytes

BE查詢層使用總記憶體。

load

starrocks_be_load_mem_bytes

匯入使用的總記憶體。

load_process_max_memory_limit_bytes,load_process_max_memory_limit_percent

table_meta

starrocks_be_tablet_meta_mem_bytes

中繼資料總記憶體。

compaction

starrocks_be_compaction_mem_bytes

版本合并總記憶體。

compaction_max_memory_limit,compaction_max_memory_limit_percent

column_pool

starrocks_be_column_pool_mem_bytes

Column Pool記憶體池,用於加速儲存層資料讀取的Column Cache。

page_cache

starrocks_be_storage_page_cache_mem_bytes

BE儲存層page緩衝。

disable_storage_page_cache,storage_page_cache_limit

chunk_allocator

starrocks_be_chunk_allocator_mem_bytes

CPU per core緩衝,用於加速小塊記憶體申請的 Cache。

chunk_reserved_bytes_limit

consistency

starrocks_be_consistency_mem_bytes

定期一致性校正使用的記憶體。

consistency_max_memory_limit_percent,consistency_max_memory_limit

schema_change

starrocks_be_schema_change_mem_bytes

Schema Change任務使用的總記憶體。

memory_limitation_per_thread_for_schema_change

clone

starrocks_be_clone_mem_bytes

Tablet Clone任務使用的總記憶體。

update

starrocks_be_update_mem_bytes

主鍵模型使用的總記憶體。

記憶體相關配置

BE配置

名稱

預設值

描述

mem_limit

90%

BE進程記憶體上限,預設硬限為BE所在機器記憶體的90%,軟限為BE所在機器記憶體的80%。

如果是BE獨立部署的話,不需要配置,如果是和其它佔用記憶體比較多的服務混合部署的話,要合理配置。

load_process_max_memory_limit_bytes

107374182400

分別表示匯入最大可用記憶體上限和最大可用記憶體百分比上限。

系統會在mem_limit * load_process_max_memory_limit_percent / 100和load_process_max_memory_limit_bytes中取較小者作為最終的可用記憶體上限。

如果匯入記憶體到達限制,則會觸發刷盤和反壓邏輯。

load_process_max_memory_limit_percent

30

compaction_max_memory_limit

-1

分別表示Compaction記憶體上限和記憶體百分比上限。

系統會在mem_limit * compaction_max_memory_limit_percent / 100和compaction_max_memory_limit中取較小者作為最終的Compaction記憶體上限。預設值-1表示沒有限制,不建議修改預設配置。

如果Compaction記憶體到達限制,則會導致Compaction任務失敗。

compaction_max_memory_limit_percent

100

disable_storage_page_cache

true

是否禁用BE儲存層page緩衝,和storage_page_cache_limit配合使用,在記憶體資源充足和有巨量資料量查詢的情境中可以開啟,能夠加速查詢效能。

storage_page_cache_limit

0

BE儲存層page緩衝可以使用的記憶體上限。

chunk_reserved_bytes_limit

2147483648

用於加速小塊記憶體配置的Cache,預設上限為2147483648(2 GB),在記憶體資源充足的情況下可以考慮開啟。

consistency_max_memory_limit

10G

一致性校正任務使用的記憶體上限和記憶體上限百分比。

系統會在mem_limit * consistency_max_memory_limit_percent / 100和consistency_max_memory_limit中取較小者作為最終的記憶體上限。

如果記憶體使用量超限,則會導致任務失敗。

consistency_max_memory_limit_percent

20

memory_limitation_per_thread_for_schema_change

2

單個Schema Change任務的記憶體使用量上限。

如果記憶體使用量超限,則會導致Schema Change任務失敗。

tc_use_memory_min

10737418240

TCmalloc最小預留記憶體。

如果小於該值,則StarRocks不會將空閑記憶體返還給作業系統。

Session變數

名稱

預設值

描述

exec_mem_limit

2147483648

單個instance記憶體限制。

load_mem_limit

0

單個匯入任務的記憶體限制。

預設為0,即表示不使用該變數,而使用exec_mem_limit作為記憶體限制。

查看記憶體使用量

您可以通過以下兩種方法分析BE記憶體使用量情況:

方式一:通過Metrics介面分析BE記憶體使用量

Metrics統計每10秒更新一次。通過curl訪問樣本如下。

# BE webserver_port預設是8040。
curl -XGET -s http://BE_IP:8040/metrics | grep "^starrocks_be_.*_mem_bytes\|^starrocks_be_tcmalloc_bytes_in_use"
說明

對應的指標含義請參見記憶體分類

方式二:通過mem_tracker介面分析BE記憶體使用量

您可以通過瀏覽器或curl訪問。本樣本通過瀏覽器訪問。

# BE webserver_port預設是8040。
http://be_ip:8040/mem_tracker

訪問情況如下圖所示。mem_tracker

各參數含義如下:

  • level:MemTracker是一個樹型結構,第一級是BE使用總記憶體,第二級是分類記憶體使用量。

  • Label:標識記憶體分類,對應的指標含義請參見記憶體分類

  • Parent:父結點Label。

  • Limit:記憶體使用量限制,none表示沒有限制。

  • Current Consumption:當前記憶體使用量。

  • Peak Consumption:峰值記憶體使用量。