Topik ini menjelaskan fitur Performance Agent yang disediakan oleh AliSQL, yang memungkinkan Anda mengumpulkan statistik performa instans ApsaraDB RDS for MySQL.
Informasi latar belakang
Performance Agent menambahkan tabel memori bernama PERF_STATISTICS di database sistem information_schema. Tabel ini menyimpan data performa yang dihasilkan selama periode waktu terbaru, yang dapat Anda kueri untuk analisis.
Prasyarat
Instans RDS Anda harus menjalankan salah satu versi dan edisi RDS MySQL berikut:
MySQL 8.4
MySQL 8.0 dengan versi mesin minor 20200229 atau yang lebih baru
MySQL 5.7 dengan versi mesin minor 20200229 atau yang lebih baru
MySQL 5.6 dengan versi mesin minor 20200630 atau yang lebih baru
Untuk melakukan upgrade versi mesin minor instans Anda, lihat Upgrade versi mesin minor.
Deskripsi
Tabel berikut menjelaskan parameter yang harus Anda konfigurasikan untuk fitur Performance Agent.
Parameter | Deskripsi |
performance_agent_enabled | Menentukan apakah fitur Performance Agent diaktifkan. Nilai yang valid: ON dan OFF. Nilai default: ON. |
performance_agent_file_size | Ukuran file data performa lokal tunggal. Satuan: MB. |
performance_agent_interval | Interval pengumpulan data. Satuan: detik. Nilai default: 1. |
performance_agent_network_device | Awalan nama network interface controller (NIC) fisik untuk host. |
performance_agent_perfstat_volume_size | Jumlah maksimum catatan data dalam tabel |
Parameter-parameter ini tidak terlihat di Konsol. Anda dapat menjalankan perintah SHOW VARIABLES LIKE '<parameter_name>'; untuk memeriksa nilainya.
Skema
Tabel memori PERF_STATISTICS menggunakan skema berikut:
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_HANDELR_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;Kolom | Deskripsi |
TIME | Timestamp pengumpulan data. Formatnya adalah |
PROCS_MEM_USAGE | Memori fisik yang digunakan oleh proses. Satuan: byte. |
PROCS_MEM_RATIO | Rasio penggunaan memori proses. |
PROCS_CPU_RATIO | Penggunaan CPU proses. |
PROCS_IOPS | Jumlah panggilan I/O sistem. |
PROCS_IOPS_READ | Operasi I/O baca per detik (IOPS) untuk proses. |
PROCS_IOPS_WRITE | IOPS tulis untuk proses. |
PROCS_IO_READ_BYTES | Jumlah data yang dibaca oleh operasi I/O. Satuan: byte. |
PROCS_IO_WRITE_BYTES | Jumlah data yang ditulis oleh operasi I/O. Satuan: byte. |
MYSQL_CONN_ABORT | Jumlah koneksi yang dibatalkan. |
MYSQL_CONN_CREATED | Jumlah koneksi yang dibuat. |
MYSQL_USER_CONN_COUNT | Jumlah total koneksi pengguna saat ini. |
MYSQL_CONN_COUNT | Jumlah total koneksi. |
MYSQL_CONN_RUNNING | Jumlah koneksi aktif saat ini. |
MYSQL_CONNECTIONS | Jumlah upaya koneksi ke server MySQL. |
MYSQL_CONN_CACHED | Jumlah thread dalam cache thread. |
MYSQL_LOCK_IMMEDIATE | Jumlah kunci tabel yang langsung diperoleh. |
MYSQL_LOCK_WAITED | Jumlah kunci tabel yang memerlukan penantian. |
MYSQL_QUESTIONS | Jumlah pernyataan yang dieksekusi oleh server. |
MYSQL_COM_INSERT | Jumlah pernyataan |
MYSQL_COM_INSERT_SELECT | Jumlah pernyataan |
MYSQL_COM_REPLACE | Jumlah pernyataan |
MYSQL_COM_REPLACE_SELECT | Jumlah pernyataan |
MYSQL_COM_UPDATE | Jumlah pernyataan |
MYSQL_COM_UPDATE_MULTI | Jumlah pernyataan |
MYSQL_COM_DELETE | Jumlah pernyataan |
MYSQL_COM_DELETE_MULTI | Jumlah pernyataan |
MYSQL_COM_SELECT | Jumlah pernyataan |
MYSQL_COM_COMMIT | Jumlah pernyataan |
MYSQL_COM_ROLLBACK | Jumlah pernyataan |
MYSQL_COM_PREPARE | Jumlah pernyataan prepared. |
MYSQL_HANDLER_COMMIT | Jumlah pernyataan |
MYSQL_HANDELR_ROLLBACK | Jumlah permintaan untuk melakukan operasi rollback di dalam storage engine. |
MYSQL_LONG_QUERY | Jumlah kueri lambat. |
MYSQL_TCACHE_GET | Jumlah hit cache pembukaan tabel. |
MYSQL_TCACHE_MISS | Jumlah miss cache pembukaan tabel. |
MYSQL_TMPFILE_CREATED | Jumlah file temporary yang dibuat. |
MYSQL_TMP_TABLES | Jumlah tabel temporary internal di memori yang dibuat. |
MYSQL_TMP_DISKTABLES | Jumlah tabel temporary internal di disk yang dibuat. |
MYSQL_SORT_MERGE | Jumlah pass merge untuk pengurutan. |
MYSQL_SORT_ROWS | Jumlah baris yang diurutkan. |
MYSQL_BYTES_RECEIVED | Jumlah byte yang diterima dari semua klien. Satuan: byte. |
MYSQL_BYTES_SENT | Jumlah byte yang dikirim ke semua klien. Satuan: byte. |
MYSQL_BINLOG_OFFSET | Ukuran file log biner yang dihasilkan. Satuan: byte. |
MYSQL_IOLOG_OFFSET | Ukuran file log biner yang dikirim oleh instans sumber. Satuan: byte. |
MYSQL_RELAYLOG_OFFSET | Ukuran file relay log yang diterapkan oleh instans replika. Satuan: byte. |
EXTRA | Statistik InnoDB dalam format JSON. Untuk detail mengenai bidang-bidang ini, lihat tabel deskripsi bidang EXTRA di bawah ini. Catatan Metrik untuk statistik InnoDB identik dengan nilai yang dikembalikan oleh perintah |
Tabel 1. Deskripsi bidang EXTRA
Bidang | Deskripsi |
INNODB_TRX_CNT | Jumlah transaksi. |
INNODB_DATA_READ | Jumlah data yang dibaca. Satuan: byte. |
INNODB_IBUF_SIZE | Ukuran insert buffer, dalam halaman. |
INNODB_LOG_WAITS | Jumlah penantian untuk penulisan log. |
INNODB_MAX_PURGE | Jumlah transaksi yang dipurge. |
INNODB_N_WAITING | Jumlah penantian kunci. |
INNODB_ROWS_READ | Jumlah baris yang dibaca. |
INNODB_LOG_WRITES | Jumlah penulisan log. |
INNODB_IBUF_MERGES | Jumlah merge dari insert buffer. |
INNODB_DATA_WRITTEN | Jumlah data yang ditulis. Satuan: byte. |
INNODB_DBLWR_WRITES | Jumlah operasi doublewrite. |
INNODB_IBUF_SEGSIZE | Ukuran saat ini dari insert buffer. |
INNODB_ROWS_DELETED | Jumlah baris yang dihapus. |
INNODB_ROWS_UPDATED | Jumlah baris yang diperbarui. |
INNODB_COMMIT_TRXCNT | Jumlah transaksi yang dikomit. |
INNODB_IBUF_FREELIST | Panjang daftar bebas. |
INNODB_MYSQL_TRX_CNT | Jumlah transaksi MySQL. |
INNODB_ROWS_INSERTED | Jumlah baris yang dimasukkan. |
INNODB_ACTIVE_TRX_CNT | Jumlah transaksi aktif. |
INNODB_OS_LOG_WRITTEN | Jumlah data yang ditulis ke file log. Satuan: byte. |
INNODB_ACTIVE_VIEW_CNT | Jumlah view aktif. |
INNODB_RSEG_HISTORY_LEN | Panjang daftar riwayat di segmen rollback. |
INNODB_AVG_COMMIT_TRXTIME | Waktu rata-rata komit transaksi. |
INNODB_MAX_COMMIT_TRXTIME | Waktu komit transaksi maksimum. |
INNODB_DBLWR_PAGES_WRITTEN | Jumlah halaman yang ditulis oleh operasi doublewrite. |
Gunakan Performance Agent
Lakukan kueri langsung terhadap tabel sistem untuk mendapatkan data performa. Contohnya:
Untuk menanyakan penggunaan CPU dan penggunaan memori selama 30 detik terakhir:
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)Untuk menanyakan jumlah baris yang dibaca dari dan dimasukkan ke InnoDB dalam 30 detik terakhir:
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 | 36140 | 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)
Hubungkan ke platform pemantauan, seperti Grafana, untuk memantau performa secara real time.
