Performance Schemaでネットワーク接続をトラブルシューティング: socket_instances テーブルの活用


MariaDB の Performance Schema socket_instances テーブルは、ソケット接続に関する詳細な情報を提供します。このテーブルは、ネットワーク接続、クライアント接続、サーバー接続を監視する際に役立ちます。

テーブル構成

socket_instances テーブルには、以下の列が含まれます。

  • LAST_UPDATE: ソケット情報が最後に更新された時刻。
  • START_TIME: ソケットが作成された時刻。
  • PHY_IO: ソケットの物理 I/O 統計情報。
  • NET_IO: ソケットのネットワーク I/O 統計情報。
  • FLAGS: ソケットフラグ。
  • ACCEPT_ID: ソケットに関連付けられている Accept ID。
  • PROCESS_ID: ソケットに関連付けられているプロセス ID。
  • PEER_PORT: ピアポート。
  • PEER_ADDRESS: ピアアドレス。
  • LOCAL_PORT: ローカルポート。
  • LOCAL_ADDRESS: ローカルアドレス。
  • STATUS: ソケットの状態。'INIT', 'CONNECT', 'WAIT_READ', 'WAIT_WRITE', 'CLOSE' のいずれかになります。
  • SOCKET_ID: ソケット ID。
  • EVENT_NAME: イベント名。常に 'socket_instances' です。

パフォーマンス分析

socket_instances テーブルは、以下のタスクのパフォーマンス分析に役立ちます。

  • 物理 I/O の分析: ソケットの物理 I/O 統計情報を確認できます。
  • ネットワーク I/O の分析: ソケットのネットワーク I/O 統計情報を確認できます。
  • サーバー接続の監視: サーバー接続に関連付けられているプロセス ID と Accept ID を確認できます。
  • クライアント接続の監視: クライアント接続に関連付けられているプロセス ID と Accept ID を確認できます。
  • ネットワーク接続の監視: ソケットの状態、ローカルアドレス、ピアアドレス、ポート番号を確認できます。

プログラミング例

以下の例は、socket_instances テーブルを使用して、すべてのソケット接続のリストを取得する方法を示しています。

SELECT * FROM performance_schema.socket_instances;

以下の例は、特定のソケット ID の情報のみを取得する方法を示しています。

SELECT * FROM performance_schema.socket_instances
WHERE SOCKET_ID = 12345;

以下の例は、すべてのソケット接続のネットワーク I/O 統計情報を取得する方法を示しています。

SELECT NET_IO.* FROM performance_schema.socket_instances;

注意事項

  • socket_instances テーブルは、リアルタイムの情報を提供します。ただし、情報はわずかに遅延する可能性があります。
  • socket_instances テーブルは、多くの行を含む可能性があります。クエリを実行する前に、テーブルをフィルターすることをお勧めします。
  • socket_instances テーブルは、Performance Schema の一部です。Performance Schema を有効にする必要があります。

プログラミング

socket_instances テーブルを使用して、MariaDB ソケット接続に関する詳細な情報を取得できます。この情報は、ネットワーク接続、クライアント接続、サーバー接続を監視するのに役立ちます。



すべてのソケット接続のリストを取得する

SELECT * FROM performance_schema.socket_instances;

説明

このクエリは、socket_instances テーブル内のすべての行を返します。つまり、すべてのソケット接続に関する情報が取得されます。

特定のソケット ID の情報のみを取得する

SELECT * FROM performance_schema.socket_instances
WHERE SOCKET_ID = 12345;

説明

このクエリは、SOCKET_ID が 12345 のソケット接続に関する情報のみを返します。

すべてのソケット接続のネットワーク I/O 統計情報を取得する

SELECT NET_IO.* FROM performance_schema.socket_instances;

説明

このクエリは、socket_instances テーブル内のすべての行の NET_IO 列を返します。つまり、すべてのソケット接続のネットワーク I/O 統計情報が取得されます。

ソケット接続の状態を監視する

SELECT SOCKET_ID, STATUS FROM performance_schema.socket_instances;

説明

このクエリは、socket_instances テーブル内のすべての行の SOCKET_ID 列と STATUS 列を返します。つまり、すべてのソケット接続の状態が取得されます。

クライアント接続を監視する

SELECT SOCKET_ID, PROCESS_ID, ACCEPT_ID
FROM performance_schema.socket_instances
WHERE STATUS = 'WAIT_READ' OR STATUS = 'WAIT_WRITE';

説明

このクエリは、STATUS が 'WAIT_READ' または 'WAIT_WRITE' の socket_instances テーブル内のすべての行の SOCKET_ID 列、PROCESS_ID 列、ACCEPT_ID 列を返します。つまり、すべてのクライアント接続に関する情報が取得されます。

サーバー接続を監視する

SELECT SOCKET_ID, PROCESS_ID, ACCEPT_ID
FROM performance_schema.socket_instances
WHERE STATUS = 'WAIT_READ' OR STATUS = 'WAIT_WRITE'
AND PROCESS_ID = 1;

説明

このクエリは、STATUS が 'WAIT_READ' または 'WAIT_WRITE' であり、PROCESS_ID が 1 の socket_instances テーブル内のすべての行の SOCKET_ID 列、PROCESS_ID 列、ACCEPT_ID 列を返します。つまり、すべてのサーバー接続に関する情報が取得されます。

  • Performance Schema は、リアルタイムの情報を提供します。ただし、情報はわずかに遅延する可能性があります。
  • Performance Schema は、多くの行を含む可能性があります。クエリを実行する前に、テーブルをフィルターすることをお勧めします。
  • 上記のコード例は、MySQL 8.0 を使用しています。他のバージョンの MySQL を使用している場合は、クエリを修正する必要がある場合があります。


Performance Schema モニタリングツールを使用する

Performance Schema モニタリングツールは、socket_instances テーブルを含む Performance Schema テーブルの情報を表示できます。人気のツールには、以下のようなものがあります。

  • Percona Toolkit: Percona Toolkit には、Performance Schema を監視するためのコマンドラインツールが含まれています。
  • phpMyAdmin: phpMyAdmin には、Performance Schema を監視するための Web インターフェースが含まれています。
  • MySQL Workbench: MySQL Workbench には、Performance Schema を監視するためのビジュアルツールが含まれています。

カスタムクエリを作成する

socket_instances テーブルには、多くの列が含まれています。ニーズに合った情報を取得するには、カスタムクエリを作成する必要があります。

サードパーティ製のツールを使用する

socket_instances テーブルの情報を監視するのに役立つサードパーティ製のツールがいくつかあります。人気のツールには、以下のようなものがあります。

  • Prometheus: Prometheus は、Performance Schema を含むシステムとアプリケーションのパフォーマンスを監視するためのオープンソースのツールです。
  • Datadog: Datadog は、Performance Schema を含むインフラストラクチャとアプリケーションのパフォーマンスを監視する SaaS ソリューションです。
  • SolarWinds Database Performance Monitor: SolarWinds Database Performance Monitor は、Performance Schema を含むデータベースのパフォーマンスを監視する商用ツールです。