このトピックでは、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 パラメーターは、インポートタスクが使用できるメモリの最大割合を指定します。 システムは、 インポートタスクで使用されるメモリが 上限 に達すると、ディスクフラッシュとバックプレッシャーがトリガーされます。 |
load_process_max_memory_limit_percent | 30 | |
compaction_max_memory_limit | -1 | compaction_max_memory_limit パラメーターは、圧縮タスクが使用できるメモリの最大量を指定します。 compaction_max_memory_limit_percent パラメーターは、圧縮タスクが使用できるメモリの最大割合を指定します。 システムは、 圧縮タスクで使用されるメモリが 上限 に達すると、圧縮タスクは失敗します。 |
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 パラメーターは、整合性チェックタスクが使用できるメモリの最大割合を指定します。 システムは、 整合性チェックタスクで使用されるメモリが 上限 を超えると、整合性チェックタスクは失敗します。 |
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次の図は、メモリ使用量の 詳細 を示しています。
パラメーター:
level:MemTracker はツリー構造です。レベル 1 は BE によって使用される合計メモリを表します。レベル 2 はさまざまなメモリ使用量カテゴリを表します。
Label:このパラメーターは、メモリ使用量カテゴリを識別するために使用されます。ラベルの詳細については、「メモリ使用量カテゴリ」をご参照ください。
Parent:親ノードのラベル。
Limit:メモリ使用量制限。none の値は、メモリ使用量が制限されていないことを示します。
Current Consumption:現在のメモリ使用量。
Peak Consumption:ピーク時のメモリ使用量。