リソースマネージャーは、PolarDB の機能で、クラスターの CPU 使用率とメモリ使用量をリアルタイムでモニタリングできます。ユーザースレッドとリソースグループという 2 つのディメンションでのモニタリングをサポートしています。これにより、システムの運用状況を把握し、負荷の原因を特定し、それに応じて負荷を分散させることができます。このトピックでは、リソースマネージャーの使用方法について説明します。
前提条件
ご利用の PolarDB クラスターは PolarDB for MySQL 8.0 を実行しており、そのリビジョンバージョンは 8.0.2.1.0 以降である必要があります。
注意事項
- スレッドプール機能を有効にすると、CPU 使用率とメモリ使用量の統計が不正確になります。そのため、
resource_group_enabledパラメーターとloose_thread_pool_enabledパラメーターを同時に有効にすることはできません。 - カスタムリソースグループ構成はサポートされていません。すべてのユーザースレッドは、接続が成功すると
user_defaultリソースグループに割り当てられます。システムのバックグラウンドスレッドはsys_defaultリソースグループに割り当てられます。
パラメーター設定
リソースマネージャーでは、次のパラメーターを設定できます。
- リソースマネージャーのモニタリング機能を有効にするには、
resource_group_enabled、performance_schema、およびcpu_usage_capture_enabledパラメーターを ON に設定する必要があります。 resource_group_enabled、performance_schema、およびcpu_usage_capture_enabledパラメーターを設定した後、新しい設定を有効にするには、クラスター内のすべてのノードを再起動する必要があります。操作を適切に計画し、注意して再起動してください。
| パラメーター | 値 | 説明 |
resource_group_enabled |
ON または OFF デフォルト値:OFF |
リソースグループ機能を有効にするかどうかを指定します。 |
performance_schema |
ON または OFF デフォルト値:OFF |
Performance Schema 機能を有効にするかどうかを指定します。 |
cpu_usage_capture_enabled |
ON または OFF デフォルト値:OFF |
CPU 使用率の収集を有効にするかどうかを指定します。 |
cpu_usage_capture_interval |
100 から 1000 デフォルト値:500 |
CPU 使用率の収集間隔 (ミリ秒単位)。 このパラメーターは、連続するサンプリング操作間の最小間隔を指定します。 |
cpu_usage_summarize_interval |
1000 から ULONG_MAX デフォルト値:2000 |
CPU 使用率の集計間隔 (ミリ秒単位)。 このパラメーターは、クエリ結果に表示される平均 CPU 使用率を計算するためのタイムウィンドウを指定します。 |
performance_schema_minimal |
ON または OFF デフォルト値:OFF |
Performance Schema のメモリ使用量を最小化するかどうかを指定します。 performance_schema パラメーターを ON に設定すると、デフォルトで多くのパフォーマンス関連の統計が有効になり、パフォーマンスに大きな影響を与えます。performance_schema パラメーターのパフォーマンスへの影響を軽減するために、performance_schema_minimal パラメーターを ON に設定することを推奨します。 説明 このパラメーターは、 performance_schema が ON に設定されている場合にのみ設定できます。 |
リソースのモニタリング
- 次のコマンドを実行して、スレッドのリソース使用量をクエリできます。
call db_resource_manager.show_processlist(); call db_resource_manager.show_processlist_verbose();説明show_processlistコマンドは、並列サブスレッドのリソースをメインスレッドに集約するため、結果にはサブスレッドが個別に表示されません。その結果、報告される CPU 使用率が 100% を超えることがあります。show_processlist_verboseコマンドは、サブスレッドを個別に表示します。
mysql> call db_resource_manager.show_processlist(); +------+------+-----------------+------+---------+------+-----------+-----------+----------------+-----------+---------+-----+----------------------------------------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | PARENT_ID | RESOURCE_GROUP | CPU_RATIO | MEM | DOP | INFO | +------+------+-----------------+------+---------+------+-----------+-----------+----------------+-----------+---------+-----+----------------------------------------------+ | 7 | root | 127.0.0.1:47983 | test | Query | 0 | starting | NULL | USR_default | 0.00 | 455273 | 1 | call db_resource_manager.show_processlist() | | 12 | root | 127.0.0.1:53189 | tpch | Query | 51 | executing | NULL | USR_default | 380.86 | 1238314 | 4 | select | | | | | | | | | | | | | | l_returnflag, | | | | | | | | | | | | | | l_linestatus, | | | | | | | | | | | | | | sum(l_quantity) as sum_qty, | | | | | | | | | | | | | | sum(l | +------+------+-----------------+------+---------+------+-----------+-----------+----------------+-----------+---------+-----+----------------------------------------------+ 2 rows in set (0.00 sec) mysql> call db_resource_manager.show_processlist_verbose(); +------+------+-----------------+------+---------+------+-----------+-----------+----------------+-----------+--------+-----+----------------------------------------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | PARENT_ID | RESOURCE_GROUP | CPU_RATIO | MEM | DOP | INFO | +------+------+-----------------+------+---------+------+-----------+-----------+----------------+-----------+--------+-----+----------------------------------------------+ | 7 | root | 127.0.0.1:47983 | test | Query | 0 | starting | NULL | USR_default | 0.02 | 455273 | 1 | call db_resource_manager.show_processlist_verbose() | | 12 | root | 127.0.0.1:53189 | tpch | Query | 53 | executing | NULL | USR_default | 0.00 | 521446 | 4 | select | | | | | | | | | | | | | | l_returnflag, | | | | | | | | | | | | | | l_linestatus, | | | | | | | | | | | | | | sum(l_quantity) as sum_qty, | | | | | | | | | | | | | | sum(l | | 13 | root | 127.0.0.1:53189 | tpch | Query | 53 | executing | 12 | USR_default | 96.71 | 192442 | 1 | NULL | | 14 | root | 127.0.0.1:53189 | tpch | Query | 53 | executing | 12 | USR_default | 93.13 | 185954 | 1 | NULL | | 15 | root | 127.0.0.1:53189 | tpch | Query | 53 | executing | 12 | USR_default | 94.73 | 183398 | 1 | NULL | | 16 | root | 127.0.0.1:53189 | tpch | Query | 53 | executing | 12 | USR_default | 96.73 | 196194 | 1 | NULL | +------+------+-----------------+------+---------+------+-----------+-----------+----------------+-----------+--------+-----+----------------------------------------------+ 6 rows in set (0.00 sec)次のコマンドを実行して、クエリ結果をフィルターおよびソートすることもできます。select * from information_schema.processlist_verbose order by cpu_ratio desc limit 10; select * from information_schema.processlist_verbose where time > 60 order by mem desc - 次のコマンドを実行して、システム内のすべてのリソースグループとその構成をクエリできます。
select * from information_schema.resource_group;説明 このクエリを実行する前に、resource_group_enabledパラメーターを ON に設定する必要があります。詳細については、「パラメーター設定」をご参照ください。
パフォーマンスへの影響
リソースマネージャー機能を有効にすると、PolarDB クラスターのパフォーマンスに軽微な影響があります。ただし、performance_schema を有効にすると、デフォルトで多数の統計コレクターがアクティブになるため、パフォーマンスへの影響がより大きくなる可能性があります。
上記の Sysbench パフォーマンステストは、次のことを示しています。
performance_schemaとresource_group_enabledを `ON` に設定し、performance_schema_minimalを `OFF` に設定してリソースマネージャーを有効にすると、機能が無効な場合 (デフォルト設定でperformance_schemaとresource_group_enabledが `OFF` の場合) と比較して、パフォーマンスが約 8% 低下します。performance_schemaとresource_group_enabledを `ON` に設定し、performance_schema_minimalを `ON` に設定してリソースマネージャーを有効にすると、機能が無効な場合 (デフォルト設定でperformance_schemaとresource_group_enabledが `OFF` の場合) と比較して、パフォーマンスの低下が約 2% と小さくなります。
performance_schemaパラメーターのパフォーマンスへの影響を軽減するために、performance_schema_minimalパラメーターを ON に設定することを推奨します。- 上記のテストは、8 コア 32 GB のメモリを搭載した PolarDB for MySQL クラスターで Sysbench を使用して実行されました。パフォーマンスへの影響は、インスタンス構成やユースケースによって異なる場合があります。