Cloud SQL パフォーマンス キャプチャの概要

Cloud SQL for MySQL のパフォーマンス キャプチャは、MySQL データベースの複雑で一時的なパフォーマンスの問題を診断して解決するのに役立ちます。

インスタンスでデータベースの速度低下や停止などのパフォーマンスの低下が発生した場合、標準指標では根本原因を特定できないことがあります。パフォーマンス キャプチャでは、問題が検出された瞬間のデータベースの詳細なスナップショットをキャプチャすることで、この問題を解決します。構成可能なトリガーを使用して、一時的な問題が発生したときにシステム全体のスナップショットを作成し、長時間実行されるトランザクションを検出できます。

サンプル ユースケース

このセクションでは、インスタンスでパフォーマンス キャプチャを有効にした後に使用できるユースケースの例を示します。

データベースの停止を診断する

問題: インスタンスが数分間応答していませんが、 指標には 秒間クエリ数(QPS)の減少と接続数の増加のみが表示されます。

使用例: runningThreadsThreshold を使用してしきい値トリガーを定義します。 パフォーマンス キャプチャ ログには、セマフォ待機数が多く、特定のミューテックス競合(アダプティブ ハッシュ インデックスなど)が根本原因であることが示されています。

クエリのパフォーマンス低下を分析する

問題: クエリのパフォーマンスがシステム全体で突然低下します。

使用例: パフォーマンス キャプチャ ログ には、大量の取り消しログが蓄積された単一の長時間実行トランザクションが 表示されます。 ログには、長時間実行トランザクション、ユーザー、クエリテキストが示されます。

レプリケーション ラグを調査する

問題: リードレプリカがソースから大幅に遅れています。

使用例: 高い値の トリガーしきい値をsecondsBehindSourceThresholdに構成します。パフォーマンス キャプチャ ログを確認して、ラグの原因となっている特定の GTID を特定できます。

長時間実行トランザクションを管理する

問題: バッチジョブまたはユーザー クエリが 長時間実行され、ロックが保持されます。

使用例: しきい値トリガーを構成します for transactionDurationThreshold. パフォーマンス キャプチャ ログには、しきい値を超えるトランザクションが示されます。この情報を使用して調査できます。

パフォーマンス データのキャプチャ方法

パフォーマンス キャプチャは、インスタンスをモニタリングするエージェント ベースのサービスとして動作します。パフォーマンス キャプチャを有効にすると、 Cloud SQL インスタンスは次の処理を行ってパフォーマンス データをキャプチャします。

  1. エージェントはデータベース構成をプローブして、定義したトリガーを読み取ります。次に、エージェントは構成可能な間隔でデータベースの指標をプローブします。デフォルトでは 30 秒に設定されています。

  2. 問題が検出され、トリガーのしきい値を超えた場合、エージェントはデータベースのライブ状態とルールを引き続き比較します。一時的なスパイクによる誤検知を防ぐため、エージェントは連続するプローブで問題を検出した場合にのみ、完全なパフォーマンス キャプチャをトリガーします。 たとえば、エージェントは、3 回連続でスレッド数が多いことを検出した場合に、パフォーマンス キャプチャをトリガーすることがあります。

  3. パフォーマンス キャプチャがトリガーされると、エージェントはデータベースに接続し、一連の診断コマンドを実行して詳細なスナップショットをキャプチャします。

  4. キャプチャされた情報はログエントリにフォーマットされ、mysql-performance-capture.log という名前の特定のログストリームの下にある Cloud SQL インスタンスのプロジェクトの Cloud Logging に直接送信されます。

構成可能なトリガー

パフォーマンス キャプチャには、次のトリガーを構成 できます。

  • runningThreadsThreshold: プライマリ インスタンスで実行されているアクティブなスレッド数が指定された値を超えるとトリガーされます。たとえば、アクティブな実行中のスレッド数が 100 を超えた場合にパフォーマンス キャプチャを実行するようにしきい値を構成できます。

  • secondsBehindSourceThreshold: レプリケーション ラグが指定された秒数を超えると、レプリカに対してトリガーされます。たとえば、リードレプリカのラグが 300 秒を超える場合にパフォーマンス キャプチャを実行するようにしきい値を構成できます。

  • transactionDurationThreshold: 指定された時間より長く実行される個々のトランザクションのロギングをトリガーします。たとえば、10 分以上実行される単一のトランザクションをログに記録するようにトリガーを設定できます。

パフォーマンス キャプチャ後のクールダウン期間

パフォーマンス イベントが継続している間の過剰なロギングとシステム オーバーヘッドを防ぐため、パフォーマンス キャプチャでは、スナップショットのキャプチャが成功した後、30 分間のクールダウン期間が実装されます。このクールダウン期間は自動的に有効になり、システムが問題のある状態が続いている間、エージェントが新しい冗長なキャプチャをトリガーしないようにします。

料金

パフォーマンス キャプチャでは、ログが Cloud Logging に保存されるため、追加のストレージ費用が発生する可能性があります。

Logging にログを保存する料金の詳細については、 料金をご覧ください。

制限事項

  • パフォーマンス キャプチャを使用するには、Query Insights を有効にする必要があります 。 Query Insights を無効にすると、パフォーマンス キャプチャも無効になります。
  • パフォーマンス キャプチャは、Cloud SQL for MySQL 5.7 以降でのみ使用できます。

次のステップ