すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:メモリリソースの管理

最終更新日:Jan 11, 2025

このトピックでは、StarRocks のバックエンド(BE)に関連するメモリ使用量カテゴリとメモリ構成パラメーターについて説明します。また、BE のメモリ使用量を表示する方法についても説明します。

メモリ使用量カテゴリ

StarRocks クラスタ内の BE に関連するメモリ構成パラメーターを追加または変更するには、次の手順を実行します。E-MapReduce(EMR)コンソールの [EMR On ECS] ページで、管理する StarRocks クラスタを見つけ、[アクション] 列の [サービス] をクリックします。[サービス] タブで、StarRocks セクションの [構成] をクリックします。StarRocks サービスページの [構成] タブで、[be.conf] タブをクリックします。[be.conf] タブで、必要なパラメーターを変更するか、[構成項目の追加] をクリックして必要なパラメーターを追加します。詳細については、「構成項目の管理」をご参照ください。

ラベル

メトリック名

説明

BE に関連するメモリ構成パラメーター

process

starrocks_be_process_mem_bytes

BE プロセスによって実際に使用されるメモリ。予約済みの空きメモリは除外されます。

mem_limit

query_pool

starrocks_be_query_mem_bytes

BE のクエリ層によって使用される合計メモリ。

N/A

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

メタデータによって使用される合計メモリ。

N/A

compaction

starrocks_be_compaction_mem_bytes

マルチバージョンメモリ圧縮によって使用される合計メモリ。

compaction_max_memory_limit および compaction_max_memory_limit_percent

column_pool

starrocks_be_column_pool_mem_bytes

BE のストレージ層でデータ読み取りを高速化するために使用されるカラムプールメモリ。

N/A

page_cache

starrocks_be_storage_page_cache_mem_bytes

BE のストレージ層のページキャッシュ。

disable_storage_page_cache および storage_page_cache_limit

chunk_allocator

starrocks_be_chunk_allocator_mem_bytes

小さなメモリチャンクの申請プロセスを高速化するために使用される、CPU コアごとのキャッシュ。

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

スキーマ変更タスクによって使用される合計メモリ。

memory_limitation_per_thread_for_schema_change

clone

starrocks_be_clone_mem_bytes

タブレットクローンタスクによって使用される合計メモリ。

N/A

update

starrocks_be_update_mem_bytes

プライマリキーモデルによって使用される合計メモリ。

N/A

メモリ構成パラメーター

BE に関連するメモリ構成パラメーター

パラメーター

デフォルト値

説明

mem_limit

90%

BE が存在するサーバー上で BE が使用できる合計メモリの最大割合。ハードリミットは 90%、ソフトリミットは 80% です。

BE がスタンドアロンノードとしてデプロイされている場合、このパラメーターは不要です。BE がより多くのメモリを消費する他のサービスと一緒にデプロイされている場合は、このパラメーターを適切に設定する必要があります。

load_process_max_memory_limit_bytes

107374182400

load_process_max_memory_limit_bytes パラメーターは、インポートタスクが使用できるメモリの最大量を指定します。 load_process_max_memory_limit_percent パラメーターは、インポートタスクが使用できるメモリの最大割合を指定します。

システムは、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_max_memory_limit パラメーターは、圧縮タスクが使用できるメモリの最大量を指定します。 compaction_max_memory_limit_percent パラメーターは、圧縮タスクが使用できるメモリの最大割合を指定します。

システムは、mem_limit × compaction_max_memory_limit_percent/100 と compaction_max_memory_limit の小さい方の値を、圧縮タスクが使用できるメモリの 上限 として選択します。デフォルト値は -1 で、圧縮タスクが使用できるメモリに制限がないことを示します。デフォルト値を変更しないことをお勧めします。

圧縮タスクで使用されるメモリが 上限 に達すると、圧縮タスクは失敗します。

compaction_max_memory_limit_percent

100

disable_storage_page_cache

true

BE のストレージ層のページキャッシュを無効にするかどうかを指定します。このパラメーターは、storage_page_cache_limit パラメーターと一緒に使用されます。メモリリソースが十分で、大量のデータがクエリされるシナリオでは、ページキャッシュを有効にできます。これにより、クエリのパフォーマンスが向上します。

storage_page_cache_limit

0

BE のストレージ層のページキャッシュに使用できる最大メモリ。

chunk_reserved_bytes_limit

2147483648

小さなメモリチャンクの割り当てを高速化するために使用されるキャッシュ。デフォルトの制限は 2147483648 バイト(2 GB)です。メモリリソースが十分な場合は、パラメーターを指定できます。

consistency_max_memory_limit

10G

consistency_max_memory_limit パラメーターは、整合性チェックタスクが使用できるメモリの最大量を指定します。 consistency_max_memory_limit_percent パラメーターは、整合性チェックタスクが使用できるメモリの最大割合を指定します。

システムは、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

スキーマ変更タスクが使用できるメモリの 上限 。

スキーマ変更タスクで使用されるメモリが 上限 を超えると、スキーマ変更タスクは失敗します。

tc_use_memory_min

10737418240

TCMalloc の最小予約メモリ。

TCMalloc の予約メモリがこのしきい値未満の場合、StarRocks は空きメモリをオペレーティングシステムに返しません。

セッションパラメーター

パラメーター

デフォルト値

説明

exec_mem_limit

2147483648

単一インスタンスのメモリ制限。

load_mem_limit

0

単一インポートタスクのメモリ制限。

デフォルト値は 0 で、exec_mem_limit パラメーターを使用してメモリ制限を指定することを示します。

メモリ使用量を表示する

次のいずれかの方法を使用して、BE のメモリ使用量を分析できます。

方法 1:メトリックインターフェースを使用して BE のメモリ使用量を分析する

メトリックインターフェースによって収集された統計は 10 秒ごとに更新されます。次の例は、cURL を使用してメトリックインターフェースにアクセスする方法を示しています。

# BE のデフォルトの webserver ポートは 8040 です。
curl -XGET -s http://BE_IP:8040/metrics | grep "^starrocks_be_.*_mem_bytes\|^starrocks_be_tcmalloc_bytes_in_use"
説明

メトリックの詳細については、「メモリ使用量カテゴリ」をご参照ください。

方法 2:mem_tracker インターフェースを使用して BE のメモリ使用量を分析する

ブラウザまたは cURL を使用して mem_tracker インターフェースにアクセスできます。この例では、ブラウザを使用します。

# BE のデフォルトの webserver ポートは 8040 です。
http://be_ip:8040/mem_tracker

次の図は、メモリ使用量の 詳細 を示しています。mem_tracker

パラメーター:

  • level:MemTracker はツリー構造です。レベル 1 は BE によって使用される合計メモリを表します。レベル 2 はさまざまなメモリ使用量カテゴリを表します。

  • Label:このパラメーターは、メモリ使用量カテゴリを識別するために使用されます。ラベルの詳細については、「メモリ使用量カテゴリ」をご参照ください。

  • Parent:親ノードのラベル。

  • Limit:メモリ使用量制限。none の値は、メモリ使用量が制限されていないことを示します。

  • Current Consumption:現在のメモリ使用量。

  • Peak Consumption:ピーク時のメモリ使用量。