このトピックでは、AliSQL が提供するパフォーマンスエージェント機能について説明します。この機能を使用すると、ApsaraDB RDS for MySQL インスタンスのパフォーマンスに関する統計情報を収集できます。
背景情報
パフォーマンスエージェントには、information_schema システムデータベース内に PERF_STATISTICS という名前のメモリテーブルが追加されています。このテーブルには、直近に生成されたパフォーマンスデータが格納され、クエリを実行してパフォーマンスデータを取得できます。
前提条件
お使いの RDS インスタンスが、次の MySQL バージョンおよび RDS エディションのいずれかを実行している必要があります。
MySQL 8.4
MySQL 8.0 (マイナーエンジンバージョン 20200229 以降)
MySQL 5.7 (マイナーエンジンバージョン 20200229 以降)
MySQL 5.6 (マイナーエンジンバージョン 20200630 以降)
インスタンスのマイナーエンジンバージョンをアップグレードするには、「マイナーエンジンバージョンのアップグレード」をご参照ください。
説明
次の表に、パフォーマンスエージェント機能で設定する必要があるパラメーターを示します。
パラメーター | 説明 |
performance_agent_enabled | パフォーマンスエージェント機能を有効にするかどうかを指定します。有効値: ON および OFF。デフォルト値: ON。 |
performance_agent_file_size | 単一のローカルパフォーマンスデータファイルのサイズ。単位: MB。 |
performance_agent_interval | データ収集の間隔。単位:秒。デフォルト値: 1。 |
performance_agent_network_device | ホストの物理ネットワークインターフェイスコントローラー (NIC) の名前プレフィックス。 |
performance_agent_perfstat_volume_size |
|
これらのパラメーターはコンソールには表示されません。SHOW VARIABLES LIKE '<parameter_name>'; コマンドを実行して、値を確認できます。
スキーマ
PERF_STATISTICS メモリテーブルは、次のスキーマを使用します:
CREATE TEMPORARY TABLE `PERF_STATISTICS` (
`TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`PROCS_MEM_USAGE` double NOT NULL DEFAULT '0',
`PROCS_MEM_RATIO` double NOT NULL DEFAULT '0',
`PROCS_CPU_RATIO` double NOT NULL DEFAULT '0',
`PROCS_IOPS` double NOT NULL DEFAULT '0',
`PROCS_IOPS_READ` double NOT NULL DEFAULT '0',
`PROCS_IOPS_WRITE` double NOT NULL DEFAULT '0',
`PROCS_IO_READ_BYTES` bigint NOT NULL DEFAULT '0',
`PROCS_IO_WRITE_BYTES` bigint NOT NULL DEFAULT '0',
`MYSQL_CONN_ABORT` int NOT NULL DEFAULT '0',
`MYSQL_CONN_CREATED` int NOT NULL DEFAULT '0',
`MYSQL_USER_CONN_COUNT` int NOT NULL DEFAULT '0',
`MYSQL_CONN_COUNT` int NOT NULL DEFAULT '0',
`MYSQL_CONN_RUNNING` int NOT NULL DEFAULT '0',
`MYSQL_CONNECTIONS` int NOT NULL DEFAULT '0',
`MYSQL_CONN_CACHED` int NOT NULL DEFAULT '0',
`MYSQL_LOCK_IMMEDIATE` int NOT NULL DEFAULT '0',
`MYSQL_LOCK_WAITED` int NOT NULL DEFAULT '0',
`MYSQL_QUESTIONS` int NOT NULL DEFAULT '0',
`MYSQL_COM_INSERT` int NOT NULL DEFAULT '0',
`MYSQL_COM_INSERT_SELECT` int NOT NULL DEFAULT '0',
`MYSQL_COM_REPLACE` int NOT NULL DEFAULT '0',
`MYSQL_COM_REPLACE_SELECT` int NOT NULL DEFAULT '0',
`MYSQL_COM_UPDATE` int NOT NULL DEFAULT '0',
`MYSQL_COM_UPDATE_MULTI` int NOT NULL DEFAULT '0',
`MYSQL_COM_DELETE` int NOT NULL DEFAULT '0',
`MYSQL_COM_DELETE_MULTI` int NOT NULL DEFAULT '0',
`MYSQL_COM_SELECT` int NOT NULL DEFAULT '0',
`MYSQL_COM_COMMIT` int NOT NULL DEFAULT '0',
`MYSQL_COM_ROLLBACK` int NOT NULL DEFAULT '0',
`MYSQL_COM_PREPARE` int NOT NULL DEFAULT '0',
`MYSQL_HANDLER_COMMIT` int NOT NULL DEFAULT '0',
`MYSQL_HANDLER_ROLLBACK` int NOT NULL DEFAULT '0',
`MYSQL_LONG_QUERY` int NOT NULL DEFAULT '0',
`MYSQL_TCACHE_GET` bigint NOT NULL DEFAULT '0',
`MYSQL_TCACHE_MISS` bigint NOT NULL DEFAULT '0',
`MYSQL_TMPFILE_CREATED` int NOT NULL DEFAULT '0',
`MYSQL_TMP_TABLES` int NOT NULL DEFAULT '0',
`MYSQL_TMP_DISKTABLES` int NOT NULL DEFAULT '0',
`MYSQL_SORT_MERGE` int NOT NULL DEFAULT '0',
`MYSQL_SORT_ROWS` int NOT NULL DEFAULT '0',
`MYSQL_BYTES_RECEIVED` bigint NOT NULL DEFAULT '0',
`MYSQL_BYTES_SENT` bigint NOT NULL DEFAULT '0',
`MYSQL_BINLOG_OFFSET` int NOT NULL DEFAULT '0',
`MYSQL_IOLOG_OFFSET` int NOT NULL DEFAULT '0',
`MYSQL_RELAYLOG_OFFSET` int NOT NULL DEFAULT '0',
`EXTRA` json NOT NULL DEFAULT 'null'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;列 | 説明 |
TIME | データ収集のタイムスタンプ。フォーマットは |
PROCS_MEM_USAGE | プロセスが使用する物理メモリ。単位:バイト。 |
PROCS_MEM_RATIO | プロセスのメモリ使用率。 |
PROCS_CPU_RATIO | プロセスの CPU 使用率。 |
PROCS_IOPS | システム I/O コールの数。 |
PROCS_IOPS_READ | プロセスの読み取り IOPS。 |
PROCS_IOPS_WRITE | プロセスの書き込み IOPS。 |
PROCS_IO_READ_BYTES | I/O 操作によって読み取られたデータ量。単位:バイト。 |
PROCS_IO_WRITE_BYTES | I/O 操作によって書き込まれたデータ量。単位:バイト。 |
MYSQL_CONN_ABORT | アボートされた接続の数。 |
MYSQL_CONN_CREATED | 作成された接続の数。 |
MYSQL_USER_CONN_COUNT | 現在のユーザー接続の総数。 |
MYSQL_CONN_COUNT | 接続の総数。 |
MYSQL_CONN_RUNNING | 現在アクティブな接続の数。 |
MYSQL_CONNECTIONS | MySQL サーバーへの接続試行回数。 |
MYSQL_CONN_CACHED | スレッドキャッシュ内のスレッド数。 |
MYSQL_LOCK_IMMEDIATE | 即時に取得されたテーブルロックの数。 |
MYSQL_LOCK_WAITED | 待機が必要だったテーブルロックの数。 |
MYSQL_QUESTIONS | サーバーによって実行されたステートメントの数。 |
MYSQL_COM_INSERT |
|
MYSQL_COM_INSERT_SELECT |
|
MYSQL_COM_REPLACE |
|
MYSQL_COM_REPLACE_SELECT |
|
MYSQL_COM_UPDATE |
|
MYSQL_COM_UPDATE_MULTI | 複数テーブルに対する |
MYSQL_COM_DELETE |
|
MYSQL_COM_DELETE_MULTI | 複数テーブルに対する |
MYSQL_COM_SELECT |
|
MYSQL_COM_COMMIT |
|
MYSQL_COM_ROLLBACK |
|
MYSQL_COM_PREPARE | プリペアドステートメントの数。 |
MYSQL_HANDLER_COMMIT | 内部 |
MYSQL_HANDLER_ROLLBACK | ストレージエンジン内でロールバック操作を実行するためのリクエスト数。 |
MYSQL_LONG_QUERY | スロークエリの数。 |
MYSQL_TCACHE_GET | テーブルオープンキャッシュヒットの数。 |
MYSQL_TCACHE_MISS | テーブルオープンキャッシュミスの数。 |
MYSQL_TMPFILE_CREATED | 作成された一時ファイルの数。 |
MYSQL_TMP_TABLES | メモリ内一時テーブルの数。 |
MYSQL_TMP_DISKTABLES | ディスク上の一時テーブルの数。 |
MYSQL_SORT_MERGE | ソートのためのマージパスの数。 |
MYSQL_SORT_ROWS | ソートされた行数。 |
MYSQL_BYTES_RECEIVED | すべてのクライアントから受信したバイト数。単位:バイト。 |
MYSQL_BYTES_SENT | すべてのクライアントに送信したバイト数。単位:バイト。 |
MYSQL_BINLOG_OFFSET | 生成されたバイナリログファイルのサイズ。単位:バイト。 |
MYSQL_IOLOG_OFFSET | ソースインスタンスによって送信されたバイナリログファイルのサイズ。単位:バイト。 |
MYSQL_RELAYLOG_OFFSET | レプリカインスタンスによって適用されたリレーログファイルのサイズ。単位:バイト。 |
EXTRA | JSON 形式の InnoDB 統計。これらのフィールドの詳細については、下記の「EXTRA フィールドの説明」表をご参照ください。 説明 InnoDB 統計のメトリクスは、 |
表 1. EXTRA フィールドの説明
フィールド | 説明 |
INNODB_TRX_CNT | トランザクション数。 |
INNODB_DATA_READ | 読み取られたデータ量。単位:バイト。 |
INNODB_IBUF_SIZE | 挿入バッファのサイズ (ページ単位)。 |
INNODB_LOG_WAITS | ログ書き込みの待機回数。 |
INNODB_MAX_PURGE | パージされたトランザクションの最大数(高水位標)。 |
INNODB_N_WAITING | ロック待機の数。 |
INNODB_ROWS_READ | 読み取られた行数。 |
INNODB_LOG_WRITES | ログの書き込み回数。 |
INNODB_IBUF_MERGES | 挿入バッファからのマージ回数。 |
INNODB_DATA_WRITTEN | 書き込まれたデータ量。単位:バイト。 |
INNODB_DBLWR_WRITES | ダブルライト操作の数。 |
INNODB_IBUF_SEGSIZE | 挿入バッファの現在のサイズ。 |
INNODB_ROWS_DELETED | 削除された行数。 |
INNODB_ROWS_UPDATED | 更新された行数。 |
INNODB_COMMIT_TRXCNT | コミットされたトランザクションの数。 |
INNODB_IBUF_FREELIST | フリーリストの長さ。 |
INNODB_MYSQL_TRX_CNT | MySQL トランザクションの数。 |
INNODB_ROWS_INSERTED | 挿入された行数。 |
INNODB_ACTIVE_TRX_CNT | アクティブなトランザクションの数。 |
INNODB_OS_LOG_WRITTEN | ログファイルに書き込まれたデータ量。単位:バイト。 |
INNODB_ACTIVE_VIEW_CNT | アクティブなビューの数。 |
INNODB_RSEG_HISTORY_LEN | ロールバックセグメント内のヒストリーリストの長さ。 |
INNODB_AVG_COMMIT_TRXTIME | 平均トランザクションコミット時間。 |
INNODB_MAX_COMMIT_TRXTIME | 最大トランザクションコミット時間。 |
INNODB_DBLWR_PAGES_WRITTEN | ダブルライト操作によって書き込まれたページ数。 |
パフォーマンスエージェントの使用
システムテーブルを直接クエリして、パフォーマンスデータを取得します。例:
過去 30 秒間の CPU 使用率とメモリ使用量をクエリする場合:
MySQL> select TIME, PROCS_MEM_USAGE, PROCS_CPU_RATIO from information_schema.PERF_STATISTICS order by time DESC limit 30; +---------------------+-----------------+-----------------+ | TIME | PROCS_MEM_USAGE | PROCS_CPU_RATIO | +---------------------+-----------------+-----------------+ | 2020-02-27 11:15:36 | 857812992 | 18.55 | | 2020-02-27 11:15:35 | 857808896 | 18.54 | | 2020-02-27 11:15:34 | 857268224 | 19.64 | | 2020-02-27 11:15:33 | 857268224 | 21.06 | | 2020-02-27 11:15:32 | 857264128 | 20.39 | | 2020-02-27 11:15:31 | 857272320 | 20.32 | | 2020-02-27 11:15:30 | 857272320 | 21.35 | | 2020-02-27 11:15:29 | 857272320 | 28.8 | | 2020-02-27 11:15:28 | 857268224 | 29.08 | | 2020-02-27 11:15:27 | 857268224 | 26.92 | | 2020-02-27 11:15:26 | 857268224 | 23.84 | | 2020-02-27 11:15:25 | 857264128 | 13.76 | | 2020-02-27 11:15:24 | 857264128 | 15.12 | | 2020-02-27 11:15:23 | 857264128 | 14.76 | | 2020-02-27 11:15:22 | 857264128 | 15.38 | | 2020-02-27 11:15:21 | 857260032 | 13.23 | | 2020-02-27 11:15:20 | 857260032 | 12.75 | | 2020-02-27 11:15:19 | 857260032 | 12.17 | | 2020-02-27 11:15:18 | 857255936 | 13.22 | | 2020-02-27 11:15:17 | 857255936 | 20.51 | | 2020-02-27 11:15:16 | 857255936 | 28.74 | | 2020-02-27 11:15:15 | 857251840 | 29.85 | | 2020-02-27 11:15:14 | 857251840 | 29.31 | | 2020-02-27 11:15:13 | 856981504 | 28.85 | | 2020-02-27 11:15:12 | 856981504 | 29.19 | | 2020-02-27 11:15:11 | 856977408 | 29.12 | | 2020-02-27 11:15:10 | 856977408 | 29.32 | | 2020-02-27 11:15:09 | 856977408 | 29.2 | | 2020-02-27 11:15:08 | 856973312 | 29.36 | | 2020-02-27 11:15:07 | 856973312 | 28.79 | +---------------------+-----------------+-----------------+ 30 rows in set (0.08 sec)過去 30 秒間に InnoDB に挿入された行数と InnoDB から読み取られた行数をクエリする場合:
MySQL> select TIME, EXTRA->'$.INNODB_ROWS_READ', EXTRA->'$.INNODB_ROWS_INSERTED' from information_schema.PERF_STATISTICS order by time DESC limit 30; +---------------------+-----------------------------+---------------------------------+ | TIME | EXTRA->'$.INNODB_ROWS_READ' | EXTRA->'$.INNODB_ROWS_INSERTED' | +---------------------+-----------------------------+---------------------------------+ | 2020-02-27 11:22:17 | 39209 | 0 | | 2020-02-27 11:22:16 | 36098 | 0 | | 2020-02-27 11:22:15 | 38035 | 0 | | 2020-02-27 11:22:14 | 37384 | 0 | | 2020-02-27 11:22:13 | 38336 | 0 | | 2020-02-27 11:22:12 | 33946 | 0 | | 2020-02-27 11:22:11 | 36301 | 0 | | 2020-02-27 11:22:10 | 36835 | 0 | | 2020-02-27 11:22:09 | 36900 | 0 | | 2020-02-27 11:22:08 | 36402 | 0 | | 2020-02-27 11:22:07 | 39672 | 0 | | 2020-02-27 11:22:06 | 39316 | 0 | | 2020-02-27 11:22:05 | 37830 | 0 | | 2020-02-27 11:22:04 | 36396 | 0 | | 2020-02-27 11:22:03 | 34820 | 0 | | 2020-02-27 11:22:02 | 37350 | 0 | | 2020-02-27 11:22:01 | 39463 | 0 | | 2020-02-27 11:22:00 | 38419 | 0 | | 2020-02-27 11:21:59 | 37673 | 0 | | 2020-02-27 11:21:58 | 35117 | 0 | | 2020-02-27 11:21:57 | 36500 | 0 | | 2020-02-27 11:21:56 | 37592 | 0 | | 2020-02-27 11:21:55 | 39765 | 0 | | 2020-02-27 11:21:54 | 35553 | 0 | | 2020-02-27 11:21:53 | 35882 | 0 | | 2020-02-27 11:21:52 | 37061 | 0 | | 2020-02-27 11:21:51 | 40699 | 0 | | 2020-02-27 11:21:50 | 39608 | 0 | | 2020-02-27 11:21:49 | 39317 | 0 | | 2020-02-27 11:21:48 | 37413 | 0 | +---------------------+-----------------------------+---------------------------------+ 30 rows in set (0.08 sec)
Grafana などのモニタリングプラットフォームに接続して、パフォーマンスをリアルタイムで監視します。
