ApsaraDB RDS for MySQLの毎日の運用管理またはインスタンス障害の処理中に、関連するパフォーマンスメトリックを表示する必要があります。 ApsaraDB RDS for MySQLの標準モニタリング機能は、さまざまなパフォーマンスメトリクスと強力な診断機能を提供します。 これにより、データベースの異常を早期に検出し、必要なトラブルシューティング方法を提供できます。 この機能は、RDSインスタンスの一般的な問題の診断ビューも提供し、異常をすばやく見つけるのに役立ちます。
使用上の注意
ApsaraDB RDS for MySQLの標準モニタリング機能はアップグレードされ、Database Autonomy Service (DAS) のパフォーマンストレンド機能と統合され、より多くの機能を提供します。 パフォーマンストレンド機能の詳細については、「パフォーマンストレンド」をご参照ください。
DASは、機械学習と専門家の経験に基づいて設計され、データベースの自動認識、復旧、最適化、O&M、およびセキュリティ保証を実装する、安定した、安全で効率的なクラウドサービスです。 DASは、手動操作によって引き起こされるサービス障害を防ぐのに役立ちます。 詳細については、「DASの概要」をご参照ください。
カスタムビュー: 標準モニタリング機能は、より多くのパフォーマンスモニタリング指標を提供し、カスタムビューをサポートします。 メトリックを選択して、ビジネス要件に基づいてカスタムビューを作成できます。
説明メトリクスに対応するパフォーマンスパラメーターの詳細については、「パフォーマンスパラメーター」をご参照ください。
一般的な問題の診断ビュー: メモリOOM診断、読み取り専用インスタンス遅延診断、スペースフル問題の診断、CPUジッタ診断、および大規模トランザクション認識診断。 ビジネス要件に基づいて診断ビューを選択し、診断ビューを使用して問題をすばやく見つけることができます。
自動診断: 標準モニタリング機能は、RDSインスタンス上のイベントをできるだけ早く検出し、イベントを自動的に診断して根本原因を分析し、提案を提供する強力な診断機能を提供します。
手動診断: 標準モニタリング機能では、手動診断を実行する期間を選択することもできます。
標準モニタリング情報の表示
- [インスタンス] ページへ移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで [モニタリングとアラート] をクリックします。
[標準モニタリング] タブで、[標準ビュー] または [カスタムビュー] タブをクリックし、ビジネス要件に基づいて次の操作を実行します。
[標準ビュー] タブで、さまざまなイベントに関するメトリックと統計の傾向を表示する時間範囲を選択します。
[トレンド比較の追加] をクリックすると、異なる時間範囲内のメトリックのパフォーマンストレンドの比較を表示できます。
説明時間範囲を指定する場合、終了時刻は開始時刻より後である必要があり、開始時刻と終了時刻の間隔は30日を超えることはできません。
イベント統計セクション: [詳細の表示] をクリックして、[パフォーマンスイベント] タブに移動します。 このタブでは、例外、最適化イベント、および自動スケーリングイベントに関する詳細を表示できます。 詳細には、スケジュールされ、実行され、実行されるイベントが含まれます。
トレンドチャートセクション:
クラシックビューに加えて、システムは一般的な問題の診断ビューを提供します。 これにより、診断ビューの主要なメトリックの傾向に基づいて、問題の原因をすばやく特定できます。
メモリOOM診断、読み取り専用インスタンス遅延診断、スペースフル問題の診断、CPUジッタ診断、および大規模トランザクション認識診断の診断ビューが提供される。 ビジネス要件に基づいて診断ビューを選択できます。 詳細については、「診断ビューの使用」をご参照ください。
説明モニタリング項目の右側にあるアイコンをクリックすると、モニタリング項目のメトリックを表示できます。
[クラシックビュー] を選択した場合、[その他の指標] をクリックして、システムに表示するモニタリング項目を選択できます。
[クラシックビュー] を選択した場合、イベントの重大度レベルを選択できます。 選択した重大度レベルのイベントが検出された場合、システムはMySQL CPU使用率 /メモリ使用率およびセッションのトレンドチャートに検出されたイベントを表示します。
トレンドチャートでイベントをクリックすると、イベントの詳細に診断結果を表示できます。
時間範囲を指定し、モニタリング項目のトレンドチャートで [診断] をクリックすると、選択した時間範囲のメトリクスを分析できます。
モニタリング項目のトレンドチャートで [一般的な原因] をクリックすると、モニタリング項目の例外の一般的な原因を表示できます。
モニタリング項目のトレンドチャートで [詳細] をクリックすると、チャートを展開できます。 時間範囲を変更して、特定の時間範囲におけるモニタリング項目の変更傾向を表示することもできます。
[カスタムビュー] タブで、[モニタリングダッシュボードの追加] をクリックして、モニタリングするメトリックを表示するカスタムダッシュボードを作成します。
[ノードとメトリクスの追加] をクリックして、ダッシュボードのRDSインスタンスとメトリクスを選択できます。
表示モードパラメーターを [表示のマージ] または [分離表示] に設定できます。
[マージ表示] を選択した場合、複数のメトリックが同じトレンドチャートに表示されます。
[個別の表示] を選択した場合、各メトリックは個別のトレンドチャートに表示されます。
チャートレイアウトパラメーターを設定して、各行のメトリックのトレンドチャートの数を指定できます。
メトリックのトレンドチャートで [詳細] をクリックすると、チャートを拡張できます。 時間範囲を変更して、特定の時間範囲におけるメトリックの変化傾向を表示することもできます。
診断ビューを使う
メモリOOM診断
[メモリOOM診断] ビューに表示されるモニタリング項目のトレンドチャートに基づいて、メモリ不足 (OOM) の問題を分析および解決できます。
メモリ使用量:
メモリ使用量がゆっくりと継続的に増加し、7日以上などの長期間にわたって、InnoDBバッファプールの使用量が変化しない場合、メモリリークが発生する可能性があります。
メモリ使用量が突然増加し、InnoDBバッファプールの使用量が変更されない場合、サービスのトラフィックが急増する可能性があります。
メモリ使用量とInnoDBバッファプールの使用量の両方が増加すると、InnoDBはアクセスされたままキャッシュされ、期待どおりに動作します。
レジデントメモリ: メモリ容量を示します。
Open files、Temp File Size、Temp Disk Tables、Sort Rows: メモリ消費量を表示します。
メモリ使用量の増加は、ビジネスメトリックと正の相関があります。 ほとんどの場合、メモリ使用量の増加を引き起こすSQL文は、OOMエラーのためにSQL文の実行が完了する前に追跡できません。 次の操作を実行することを推奨します。
业务ログを确认して, メモリ使用量の増加の原因を特定してください。
メモリ容量を拡張し、SQL Explorerと監査機能を有効にします。 これにより, SQL文が実行された時点で, メモリ使用量の増加の原因を特定できます。 詳細については、「SQLエクスプローラーと監査機能の使用」をご参照ください。
読み取り専用インスタンス遅延診断
[読み取り専用インスタンス遅延診断] ビューに表示されるモニタリング項目のトレンドチャートに基づいて、読み取り専用RDSインスタンスのレイテンシ関連の問題を分析および解決できます。
アクティブセッション: メタデータロックが存在し、輻輳が発生するかどうかを示します。
ほとんどの場合、大量のデータがクエリされると、DDLステートメントの実行時にメタデータロックを取得できません。 その結果、DDLステートメントは他のセッションをブロックし、接続の蓄積を引き起こします。
レジデントメモリ: メモリ容量を示します。
DML行の処理済み、要求されたページ、DML/DDL操作、および使用された一時ディスク容量: 一般的なビジネス指標を示します。
レプリケーションの遅延: レプリケーションの遅延を示します。
スペース完全な問題の診断
[スペースフル問題の診断] ビューに表示されるモニタリング項目のトレンドチャートに基づいて、使い果たされたストレージの問題を分析および解決できます。
ストレージを占有するファイルの種類と、各種類のファイルのストレージ使用傾向を確認できます。 ほとんどの場合、次の種類のファイルがストレージを占有します。
データファイル (user_data_size): ストレージ分析機能を使用して、各データベースおよびテーブルのストレージ使用量を確認できます。 その後、ビジネス要件に基づいて、ストレージ容量を拡張したり、不要なデータを削除したりできます。 ストレージ分析機能の詳細については、「ストレージ分析機能の使用」をご参照ください。 データファイルの処理方法の詳細については、「ApsaraDB RDS For MySQLインスタンスのストレージ容量がデータファイルによって使い果たされたためにロック状態になっている場合の対処方法」をご参照ください。
一時ファイル (temp_file_size): SQL文を実行してデータを並べ替え、グループ化したり、テーブルを関連付けたりすると、一時テーブルが生成されることがあります。 バイナリログキャッシュファイルは、大きなトランザクションがコミットされる前に生成されます。 これらのテーブルとファイルはストレージを占有します。 一時ファイルを処理する方法の詳細については、「一時ファイルによってストレージ容量が使い果たされたためにApsaraDB RDS For MySQLインスタンスがロック状態になっている場合の対処方法」をご参照ください。
バイナリログ (binlog_size): バイナリログは、大規模なトランザクションによって迅速に生成されます。 これらのログはストレージを占有します。 バイナリログを処理する方法の詳細については、「ApsaraDB RDS For MySQLインスタンスのストレージ容量がバイナリログファイルによって使い果たされた場合の対処方法」をご参照ください。
説明バイナリログがサブスクライブされている場合、バイナリログは最も早い機会に削除されず、ストレージを占有する可能性があります。
アンドゥログ (undo_log_size): ほとんどの場合、クエリの実行時間が長いため、アンドゥログをクリアできません。 長期間実行され、完了していないクエリが存在するかどうかを確認する必要があります。
説明MySQL 5.6以前のバージョンでは、アンドゥログ用に個別のテーブルスペースは用意されていません。
スロークエリログ (slowlog_size): スロークエリログが大量のストレージを占有する場合、
TRUNCATE
ステートメントを実行して、オフピーク時にスロークエリログを消去することを推奨します。説明TRUNCATE
ステートメントは、マイナーエンジンバージョンが20210630以降のMySQL 5.7とマイナーエンジンバージョンが20210930以降のMySQL 8.0でサポートされています。一般的なクエリログ (general_log_size): このメトリックの値は、エラーログ、パフォーマンスエージェントログ、およびリカバリログの合計サイズです。 ほとんどの場合、これらのログの合計サイズは1 GB未満です。 サイズが1 GBを大幅に超える場合、 チケットを起票してください。 このメトリックは、MySQLカーネルによって定期的に出力されるカーネルメトリックデータを指定します。 MySQLのgeneral_logのログサイズは指定されていません。
CPUジッタ診断
[CPUジッタ診断] ビューに表示されるモニタリング項目のトレンドチャートに基づいて、CPUジッタの問題を分析および解決できます。 次の種類の監視項目は、CPU使用率と強い相関があります。
ビジネスモニタリング项目:
ページリクエスト: ほとんどの場合、バッファプール内のリクエスト数の傾向はCPU使用率によって変動します。
処理済み行数: CPU使用率とシステムで処理される行数の関係を示します。 この監視項目に基づいて、CPU使用率が変化したときに処理行数が急激に増加するかどうかを確認できます。
クエリ: CPU使用率が変化したときに実行されるSQL文の種類を示します。
接続関連のモニタリング項目:
スレッド実行: 同時実行性が高いとCPU使用率が高くなります。 メタデータロックまたは行ロックは、CPU使用率に影響を与える接続の蓄積を引き起こします。
CPUジッタの一般的な原因:
[ページリクエスト] または [処理済み行数] のモニタリング項目が変更されます。 この場合、CPU使用率が変化する期間を選択し、[診断] をクリックして問題の詳細を取得できます。
アクティブな接続の数が増えます。 この場合、ビジネス側から問題を解決する必要があります。
大規模なトランザクション認識診断
[大規模トランザクション認識診断] ビューに表示されるモニタリング項目のトレンドチャートに基づいて、大規模なトランザクション関連の問題を分析および解決できます。
Threads Connected、Temp File Size、Binlog space: 大きなトランザクションが存在するかどうかを示します。 次のいずれかのイベントが発生した場合、データベースに大きなトランザクションが存在します。
アクティブなセッションが蓄積されます。
一時ファイルによって占有されるストレージは増加し、その後減少します。
一時ファイルが占有するストレージは減少しますが、バイナリログが占有するストレージは増加します。
Rows Processed、Logical Page Write、Queries per Second: 大規模なトランザクションのタイプを示します。
たとえば、いくつかのクエリが実行されたが、多数の行が削除された場合、データを削除する大きなトランザクションが存在します。
大規模なトランザクションは、バイナリログ書き込みのブロックを引き起こします。
大規模なトランザクションが存在する場合、一時テーブル (binlogキャッシュ) によって占有されるストレージは徐々に増加し、その後安定したままになります。
一時テーブルが占有するストレージが安定している場合、バイナリログが占有するストレージが増加します。 バイナリログはシリアルモードでグローバルに書き込まれます。 その結果、他のトランザクションがブロックされ、接続が蓄積されます。
RDSインスタンスがRDS High-availability Editionを実行している場合、プライマリ /セカンダリ切り替えのためにプライマリおよびセカンダリRDSインスタンスのステータスを確認するために実行されるステートメントはブロックされます。 その結果、プライマリ /セカンダリの切り替えがRDSインスタンスで直接実行されます。
大きなトランザクションを小さなトランザクションに分割し、小さなトランザクションを個別に実行することを推奨します。 たとえば、DELETE
文にWHERE
句を追加して、一度に削除されるデータの量を制限し、削除操作をより小さな操作に分割できます。
参考資料
以下のトピックでは、一般的なパフォーマンス問題のトラブルシューティング方法について説明します。
自律サービス関連の機能を使用して、RDSインスタンスのパフォーマンス診断と最適化を実行できます。 詳細については、「DASの概要」をご参照ください。