io/socket/sql/client_connection - Amazon Aurora

io/socket/sql/client_connection

io/socket/sql/client_connection イベントは、スレッドが新しい接続を処理している最中に発生します。

サポート対象エンジンバージョン

この待機イベント情報は、以下のエンジンバージョンでサポートされています。

  • Aurora MySQL バージョン 2 から 2.09.2 まで

  • Aurora MySQL バージョン 1 から 1.23.1 まで

Context

イベントio/socket/sql/client_connection は、受信する新規クライアント接続を処理するためのスレッド作成で mysqld がビジー状態であることを示します。このシナリオでは、スレッドが割り当てられるのを接続が待っている間、新しいクライアント接続リクエストの対応処理が遅くなります。詳細については、「MySQLサーバー (mysqld)」を参照してください。

待ち時間増加の考えられる原因

この イベントが通常よりも多く表示され、パフォーマンスの問題を示している可能性がある場合、典型的な原因は次のとおりです。

  • アプリケーションから Amazon RDS インスタンスへの新しいユーザー接続が突然増加しています。

  • ネットワーク、CPU、またはメモリがスロットリングされているため、DB インスタンスは新しい接続を処理できません。

アクション

io/socket/sql/client_connection がデータベースアクティビティを占領している場合でも、必ずしもパフォーマンスの問題を示すわけではありません。アイドル状態でないデータベースでは、待機イベントは常に最上位にあります。パフォーマンスが低下したときにのみ動作してください。待機イベントの原因に応じたさまざまなアクションをお勧めします。

問題のあるセッションとクエリを特定する

DB インスタンスにボトルネックが発生している場合、ユーザーの初期のタスクは、その原因となるセッションとクエリを見つけることになります。便利なデータベースブログ記事は、Performance Insights を使用した Amazon Aurora MySQL ワークロードの分析を参照してください。

ボトルネックの原因となっているセッションとクエリを特定するには

  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[Performance Insights] を選択します。

  3. DB インスタンスを選択します。

  4. データベース負荷で、待機でスライスを選択します。

  5. ページの下部で トップ SQL を選択します。

    リストの上部にあるクエリは、データベースで最大のロードを引き起こしています。

接続管理のベストプラクティス

接続を管理するには、次の戦略を検討してください。

リソースがスロットリングされている場合にインスタンスをスケールアップする

次のリソースでスロットリングの例を探してください。

  • CPU

    Amazon CloudWatch メトリクスで CPU 使用率が高くなるかどうかを確認してください。

  • ネットワーク

    CloudWatch メトリクス network receive throughput および network transmit throughput の値の増加を確認します。インスタンスがインスタンスクラスのネットワーク帯域幅制限に達した場合は、RDS インスタンスをより高いインスタンスクラスタイプにスケールアップすることを検討してください。詳細については、「Aurora DB インスタンスクラス」を参照してください。

  • 解放可能なメモリ

    CloudWatch メトリクス FreeableMemory のドロップをチェックします。また、拡張モニタリングをオンにすることを検討してください。詳細については、「拡張モニタリングを使用した OS メトリクスのモニタリング」を参照してください。

上位ホストと上位ユーザーを確認する

Performance Insights を使用して、上位ホストと上位ユーザーを確認します。詳細については、「Performance Insights ダッシュボードを使用してメトリクスを分析する」を参照してください。

performance_schema テーブルのクエリを実行する

現在の接続数と合計接続数の正確な数を取得するには、performance_schema テーブルをクエリします。この手法では、多数の接続の作成を担当する出典ユーザーまたはホストを特定します。例えば、次の通り performance_schema テーブルをクエリします。

SELECT * FROM performance_schema.accounts; SELECT * FROM performance_schema.users; SELECT * FROM performance_schema.hosts;

クエリのスレッド状態を確認する

パフォーマンスの問題が継続する場合は、クエリのスレッド状態を確認してください。mysql クライアントで、次のコマンドを実行します。

show processlist;

リクエストとクエリを監査する

ユーザーアカウントからのリクエストとクエリの性質を確認するには、AuroraAurora MySQL アドバンスト監査を使用します。監査を有効にする方法については、Amazon Aurora MySQL DB クラスターでのアドバンストな監査の使用 を参照してください。

データベース接続をプールする

接続管理に Amazon RDS プロキシを使用することを検討してください。RDS プロキシーを使用すると、アプリケーションでデータベース接続をプールおよび共有して、アプリケーションのスケール能力を向上させることができます。RDS Proxy は、アプリケーション接続を維持しながらスタンバイ DB インスタンスに自動的に接続することで、データベースの障害に対するアプリケーションの耐障害性を高めます。詳細については、「Amazon RDS Proxy の使用」を参照してください。