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_sizePERF_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_RATIOCPU使用率。
PROCS_IOPS系统IO调用次数。
PROCS_IO_READ_BYTESIO读取数据量,单位为Byte。
PROCS_IO_WRITE_BYTESIO写入数据量,单位为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。
EXTRAInnoDB统计信息。EXTRA包含多个字段,为JSON格式。详细字段介绍请参见下方EXTRA字段说明
说明 InnoDB统计信息的指标项与SHOW STATUS命令显示的值相同。
表 1. EXTRA字段说明
字段说明
INNODB_TRX_CNT事务数。
INNODB_DATA_READ读取数据量,单位为Byte。
INNODB_IBUF_SIZE合并记录页数。
INNODB_LOG_WAITSLog写入等待次数。
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_CNTMySQL事务数。
INNODB_ROWS_INSERTED插入数据行数。
INNODB_ACTIVE_TRX_CNT活跃事务数。
INNODB_OS_LOG_WRITTEN日志文件写入量,单位为Byte。
INNODB_ACTIVE_VIEW_CNT活跃视图数。
INNODB_RSEG_HISTORY_LENTRX_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)
  • 对接性能监控平台(如使用Grafana可视化工具),实现实时监控。Grafana