Amazon Aurora MySQL データベースのパフォーマンスのトラブルシューティング
このトピックでは、Aurora MySQL DB の一般的なパフォーマンス問題と、これらの問題を迅速に修正するためのトラブルシューティング方法または情報収集方法に焦点を当てます。データベースのパフォーマンスを次の 2 つのカテゴリに分類します。
-
サーバーパフォーマンス — データベースサーバー全体の動作が遅い。
-
クエリパフォーマンス — 1 つまたは複数のクエリの実行に時間がかかる。
AWS モニタリングオプション
トラブルシューティングに役立てるため、次の AWS モニタリングオプションを使用することをお勧めします。
-
Amazon CloudWatch — Amazon CloudWatch は AWS で実行されている AWS リソースやアプリケーションをリアルタイムにモニタリングします。CloudWatch を使用してメトリクスを収集および追跡できます。メトリクスとは、リソースやアプリケーションについて測定できる変数です。詳細については、「Amazon CloudWatch とは」を参照してください。
DB インスタンスのすべてのシステムメトリクスとプロセス情報を AWS Management Console に表示できます。Aurora MySQL DB クラスターを設定して、全般ログ、スローログ、監査ログおよびエラーログのデータを Amazon CloudWatch Logs のロググループに発行できます。これにより、傾向を確認したり、ホストが影響を受けた場合にログを維持したり、異常や変化を簡単に特定するための「通常の」パフォーマンスのベースラインを作成することができます。詳細については、「Amazon CloudWatch Logs への Amazon Aurora MySQL ログの発行」を参照してください。
-
拡張モニタリング — Aurora MySQL データベースに対して追加の Amazon CloudWatch メトリクスを有効にするには、拡張モニタリングを有効にします。Aurora DB クラスターを作成または変更するときは、[拡張モニタリングを有効化] を選択します。これにより、Aurora はパフォーマンスメトリクスを CloudWatch にパブリッシュできます。利用可能な主なメトリクスには、CPU 使用率、データベース接続、ストレージ使用量、クエリレイテンシーなどがあります。これらはパフォーマンスのボトルネックの特定に役立ちます。
DB インスタンスに対して転送される情報量は、拡張モニタリング機能に対して定義された詳細度に正比例します。モニタリング間隔を短くすると、OS メトリクスのレポート回数が増え、モニタリングコストが高くなります。コストを管理するには、AWS アカウント 内のインスタンスごとに異なる詳細度を設定します。インスタンス作成時のデフォルトの精度は 60 秒です。詳細については、「拡張モニタリングのコスト」を参照してください。
-
Performance Insights — すべてのデータベースコールメトリクスを表示できます。これには DB ロック、待機、処理された行数などがあり、これらはすべてトラブルシューティングに使用できます。Aurora DB クラスターを作成または変更するときは、[Performance Insights を有効にする] を選択します。デフォルトでは、Performance Insights のデータ保持期間は 7 日間ですが、長期的なパフォーマンスの傾向を分析するようにカスタマイズできます。7 日を超える保存期間については、有料プランにアップグレードする必要があります。詳細については、「Performance Insights の料金
」を参照してください。Aurora DB インスタンスごとにデータ保持期間を個別に設定できます。詳細については、「Amazon Aurora での Performance Insights を使用したDB 負荷のモニタリング」を参照してください。
Aurora MySQL データベースのパフォーマンス問題の最も一般的な原因
次の手順を使用して、Aurora MySQL データベースのパフォーマンス問題をトラブルシューティングできます。これらのステップは調査の論理的な順序で示していますが、直線的なものではありません。1 つの発見が複数のステップにまたがることもあり、それによって一連の調査パスが提供されます。
-
ワークロード — データベースのワークロードを理解します。
-
ログ記録 — すべてのデータベースログを確認します。
-
データベース接続 — アプリケーションとデータベース間の接続が信頼できることを確認します。
-
クエリパフォーマンス — クエリ実行プランが変更されていないか確認します。コードを変更すると、プランが変更される可能性があります。