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

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

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

サンプル ユースケース

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

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

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

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

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

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

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

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

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

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

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

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

使用例: 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 以降でのみ使用できます。

次のステップ