Performance Agent是PolarDB提供的一种更加便捷的性能数据统计方案。通过PolarDB MySQL版插件的方式,实现PolarDB MySQL版集群中的节点内部各项性能数据的采集与统计。
前提条件
- PolarDB集群版本需为PolarDB MySQL版8.0版本且Revision version为8.0.2.1.0或以上,您可以参见查询版本号确认集群版本。
- loose_performance_schema参数已设置为ON。具体操作请参见设置集群参数和节点参数。
背景信息
Performance Agent在performance_schema系统库下新增了一张内存表PERF_STATISTICS,用于统计最近一段时间的性能数据,您可以直接查询该表获取相关指标的性能数据。
说明
您也可以通过开启performance_schema功能来细粒度监控集群在锁、事务、内存等各方面的性能指标。但是,由于开启performance_schema会占用大量的系统内存并在一定程度上影响集群的性能,故在PolarDB MySQL版中该功能默认关闭。如需开启performance_schema,建议您根据集群的规格资源谨慎配置performance_schema的各项指标。
参数说明
Performance Agent功能相关参数说明如下:
参数 | 说明 |
---|---|
performance_agent_enabled | 是否开启Performance Agent功能。取值为ON或OFF。默认值为ON。 |
performance_agent_interval | 性能数据采集间隔。单位为秒,取值范围为1~60,默认值为1。 |
performance_agent_perfstat_volume_size | PERF_STATISTICS表的最大数据条数。默认值为3600(即当采样间隔为1秒时,保存最近1小时的性能数据)。 |
表结构说明
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_CPU_RATIO` double NOT NULL DEFAULT '0',
`PROCS_IOPS` double NOT NULL DEFAULT '0',
`PROCS_IO_READ_BYTES` bigint(21) NOT NULL DEFAULT '0',
`PROCS_IO_WRITE_BYTES` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_CONN_ABORT` int(11) NOT NULL DEFAULT '0',
`MYSQL_CONN_CREATED` int(11) NOT NULL DEFAULT '0',
`MYSQL_USER_CONN_COUNT` int(11) NOT NULL DEFAULT '0',
`MYSQL_CONN_RUNNING` int(11) NOT NULL DEFAULT '0',
`MYSQL_LOCK_IMMEDIATE` int(11) NOT NULL DEFAULT '0',
`MYSQL_LOCK_WAITED` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_INSERT` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_UPDATE` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_DELETE` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_SELECT` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_COMMIT` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_ROLLBACK` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_PREPARE` int(11) NOT NULL DEFAULT '0',
`MYSQL_LONG_QUERY` int(11) NOT NULL DEFAULT '0',
`MYSQL_TCACHE_GET` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_TCACHE_MISS` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_TMPFILE_CREATED` int(11) NOT NULL DEFAULT '0',
`MYSQL_TMP_TABLES` int(11) NOT NULL DEFAULT '0',
`MYSQL_TMP_DISKTABLES` int(11) NOT NULL DEFAULT '0',
`MYSQL_SORT_MERGE` int(11) NOT NULL DEFAULT '0',
`MYSQL_SORT_ROWS` int(11) NOT NULL DEFAULT '0',
`MYSQL_BYTES_RECEIVED` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_BYTES_SENT` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_BINLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`MYSQL_IOLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`MYSQL_RELAYLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`EXTRA` json NOT NULL DEFAULT 'null'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
列名 | 说明 |
---|---|
TIME | 时间(UTC),格式为yyyy-MM-dd HH:mm:ss。 |
PROCS_MEM_USAGE | 物理内存使用量,单位为Byte。 |
PROCS_CPU_RATIO | CPU使用率。 |
PROCS_IOPS | 系统IO调用次数。 |
PROCS_IO_READ_BYTES | IO读取数据量,单位为Byte。 |
PROCS_IO_WRITE_BYTES | IO写入数据量,单位为Byte。 |
MYSQL_CONN_ABORT | 断开连接数。 |
MYSQL_CONN_CREATED | 新建连接数。 |
MYSQL_USER_CONN_COUNT | 当前总的用户连接数。 |
MYSQL_CONN_RUNNING | 当前活跃连接数。 |
MYSQL_LOCK_IMMEDIATE | 当前锁占用数。 |
MYSQL_LOCK_WAITED | 当前锁等待数。 |
MYSQL_COM_INSERT | 插入语句数。 |
MYSQL_COM_UPDATE | 更新语句数。 |
MYSQL_COM_DELETE | 删除语句数。 |
MYSQL_COM_SELECT | 查询语句数。 |
MYSQL_COM_COMMIT | 事务提交数(显式提交)。 |
MYSQL_COM_ROLLBACK | 事务回滚数。 |
MYSQL_COM_PREPARE | 预处理语句数。 |
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 | 接收数据量,单位为Byte。 |
MYSQL_BYTES_SENT | 发送数据量,单位为Byte。 |
MYSQL_BINLOG_OFFSET | 产生的Binlog文件大小,单位为Byte。 |
MYSQL_IOLOG_OFFSET | 主库发送的Binlog文件大小,单位为Byte。 |
MYSQL_RELAYLOG_OFFSET | 从库应用的Binlog文件大小,单位为Byte。 |
EXTRA | InnoDB统计信息。EXTRA包含多个字段,为JSON格式。详细字段介绍请参见下方EXTRA字段说明。 说明 InnoDB统计信息的指标项与 SHOW STATUS 命令显示的值相同。 |
字段 | 说明 |
---|---|
INNODB_TRX_CNT | 事务数。 |
INNODB_DATA_READ | 读取数据量,单位为Byte。 |
INNODB_IBUF_SIZE | 合并记录页数。 |
INNODB_LOG_WAITS | Log写入等待次数。 |
INNODB_MAX_PURGE | 清除事务数。 |
INNODB_N_WAITING | 锁等待数。 |
INNODB_ROWS_READ | 读取数据行数。 |
INNODB_LOG_WRITES | 日志写次数。 |
INNODB_IBUF_MERGES | 合并次数。 |
INNODB_DATA_WRITTEN | 写入数据量,单位为Byte。 |
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 | 日志文件写入量,单位为Byte。 |
INNODB_ACTIVE_VIEW_CNT | 活跃视图数。 |
INNODB_RSEG_HISTORY_LEN | TRX_RSEG_HISTORY表长度。 |
INNODB_AVG_COMMIT_TRXTIME | 平均事务提交时间。 |
INNODB_MAX_COMMIT_TRXTIME | 最长事务提交时间。 |
INNODB_DBLWR_PAGES_WRITTEN | 双写操作完成写入次数。 |
使用方法
- 您可以参见如下示例直接查询系统表,获取性能数据。
- 查询最近30秒的CPU和内存使用情况,示例如下:
MySQL> select TIME, PROCS_MEM_USAGE, PROCS_CPU_RATIO from performance_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读写的数据行数,示例如下:
MySQL> select TIME, EXTRA->'$.INNODB_ROWS_READ', EXTRA->'$.INNODB_ROWS_INSERTED' from performance_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)
- 查询最近30秒的CPU和内存使用情况,示例如下:
- 对接性能监控平台(如使用Grafana可视化工具),实现实时监控。