Este tópico descreve o recurso Performance Agent do AliSQL. Esse recurso permite coletar estatísticas sobre o desempenho de uma instância do ApsaraDB RDS for MySQL.
Informações de contexto
O Performance Agent adiciona uma tabela de memória chamada PERF_STATISTICS, armazenada no banco de dados do sistema information_schema. Essa tabela armazena os dados de desempenho gerados no período mais recente. É possível consultar esses dados de desempenho diretamente na tabela.
Pré-requisitos
Sua instância RDS deve executar uma das seguintes versões do MySQL e edições do RDS:
MySQL 8.4
MySQL 8.0 com versão secundária do mecanismo 20200229 ou posterior
MySQL 5.7 com versão secundária do mecanismo 20200229 ou posterior
MySQL 5.6 com versão secundária do mecanismo 20200630 ou posterior
Atualize a versão secundária do mecanismo da sua instância, consulte Upgrade the minor engine version.
Descrição
A tabela a seguir descreve os parâmetros de configure do recurso Performance Agent.
|
Parâmetro |
Descrição |
|
performance_agent_enabled |
Define se o recurso Performance Agent está ative. Valores válidos: ON e OFF. Valor padrão: ON. |
|
performance_agent_file_size |
Tamanho de um único arquivo local de dados de desempenho. Unidade: MB. |
|
performance_agent_interval |
Intervalo de coleta de dados. Unidade: segundos. Valor padrão: 1. |
|
performance_agent_network_device |
Prefixo do nome da controladora de interface de rede (NIC) física do host. |
|
performance_agent_perfstat_volume_size |
Número máximo de registros de dados na tabela |
Esses parâmetros não ficam visíveis no console. Execute o comando SHOW VARIABLES LIKE '<parameter_name>'; para verificar os valores.
Schema
A tabela de memória PERF_STATISTICS usa o seguinte schema:
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;
Coluna | Descrição |
TIME | Carimbo de data e hora da coleta de dados. Formato: |
PROCS_MEM_USAGE | Memória física usada pelo processo. Unidade: bytes. |
PROCS_MEM_RATIO | Taxa de uso de memória do processo. |
PROCS_CPU_RATIO | Utilização de CPU do processo. |
PROCS_IOPS | Número de chamadas de E/S do sistema. |
PROCS_IOPS_READ | Operações de leitura de E/S por segundo (IOPS) do processo. |
PROCS_IOPS_WRITE | IOPS de escrita do processo. |
PROCS_IO_READ_BYTES | Quantidade de dados lidos pelas operações de E/S. Unidade: bytes. |
PROCS_IO_WRITE_BYTES | Quantidade de dados gravados pelas operações de E/S. Unidade: bytes. |
MYSQL_CONN_ABORT | Número de conexões abortadas. |
MYSQL_CONN_CREATED | Número de conexões crie. |
MYSQL_USER_CONN_COUNT | Número total de conexões de usuário atuais. |
MYSQL_CONN_COUNT | Número total de conexões. |
MYSQL_CONN_RUNNING | Número de conexões ativas no momento. |
MYSQL_CONNECTIONS | Número de tentativas de conexão com o servidor MySQL. |
MYSQL_CONN_CACHED | Número de threads no cache de threads. |
MYSQL_LOCK_IMMEDIATE | Número de bloqueios de tabela adquiridos imediatamente. |
MYSQL_LOCK_WAITED | Número de bloqueios de tabela que exigiram espera. |
MYSQL_QUESTIONS | Número de instruções executadas pelo servidor. |
MYSQL_COM_INSERT | Número de instruções |
MYSQL_COM_INSERT_SELECT | Número de instruções |
MYSQL_COM_REPLACE | Número de instruções |
MYSQL_COM_REPLACE_SELECT | Número de instruções |
MYSQL_COM_UPDATE | Número de instruções |
MYSQL_COM_UPDATE_MULTI | Número de instruções |
MYSQL_COM_DELETE | Número de instruções |
MYSQL_COM_DELETE_MULTI | Número de instruções |
MYSQL_COM_SELECT | Número de instruções |
MYSQL_COM_COMMIT | Número de instruções |
MYSQL_COM_ROLLBACK | Número de instruções |
MYSQL_COM_PREPARE | Número de instruções preparadas. |
MYSQL_HANDLER_COMMIT | Número de instruções |
MYSQL_HANDELR_ROLLBACK | Número de solicitações para executar uma operação de rollback em um mecanismo de armazenamento. |
MYSQL_LONG_QUERY | Número de consultas lentas. |
MYSQL_TCACHE_GET | Número de acertos no cache de abertura de tabelas. |
MYSQL_TCACHE_MISS | Número de falhas no cache de abertura de tabelas. |
MYSQL_TMPFILE_CREATED | Número de arquivos temporários criados. |
MYSQL_TMP_TABLES | Número de tabelas temporárias internas criadas na memória. |
MYSQL_TMP_DISKTABLES | Número de tabelas temporárias internas criadas no disco. |
MYSQL_SORT_MERGE | Número de passagens de mesclagem para classificação. |
MYSQL_SORT_ROWS | Número de linhas classificadas. |
MYSQL_BYTES_RECEIVED | Número de bytes recebidos de todos os clientes. Unidade: bytes. |
MYSQL_BYTES_SENT | Número de bytes enviados para todos os clientes. Unidade: bytes. |
MYSQL_BINLOG_OFFSET | Tamanho dos arquivos de log binário gerados. Unidade: bytes. |
MYSQL_IOLOG_OFFSET | Tamanho dos arquivos de log binário enviados pela instância de source. Unidade: bytes. |
MYSQL_RELAYLOG_OFFSET | Tamanho dos arquivos de relay log aplicados pela instância réplica. Unidade: bytes. |
EXTRA | Estatísticas do InnoDB no formato JSON. Para obter detalhes sobre esses campos, consulte a tabela EXTRA field descriptions abaixo. Nota As métricas das estatísticas do InnoDB são idênticas aos valores retornados pelo comando |
Tabela 1. Descrições dos campos EXTRA
|
Campo |
Descrição |
|
INNODB_TRX_CNT |
Número de transações. |
|
INNODB_DATA_READ |
Quantidade de dados lidos. Unidade: bytes. |
|
INNODB_IBUF_SIZE |
Tamanho do buffer de inserção, em páginas. |
|
INNODB_LOG_WAITS |
Número de esperas para gravações de log. |
|
INNODB_MAX_PURGE |
Número de transações purgadas. |
|
INNODB_N_WAITING |
Número de esperas de bloqueio. |
|
INNODB_ROWS_READ |
Número de linhas lidas. |
|
INNODB_LOG_WRITES |
Número de gravações de log. |
|
INNODB_IBUF_MERGES |
Número de mesclagens do buffer de inserção. |
|
INNODB_DATA_WRITTEN |
Quantidade de dados gravados. Unidade: bytes. |
|
INNODB_DBLWR_WRITES |
Número de operações de doublewrite. |
|
INNODB_IBUF_SEGSIZE |
Tamanho atual do buffer de inserção. |
|
INNODB_ROWS_DELETED |
Número de linhas exclua. |
|
INNODB_ROWS_UPDATED |
Número de linhas atualizadas. |
|
INNODB_COMMIT_TRXCNT |
Número de transações confirmadas. |
|
INNODB_IBUF_FREELIST |
Tamanho da lista livre. |
|
INNODB_MYSQL_TRX_CNT |
Número de transações do MySQL. |
|
INNODB_ROWS_INSERTED |
Número de linhas inseridas. |
|
INNODB_ACTIVE_TRX_CNT |
Número de transações ativas. |
|
INNODB_OS_LOG_WRITTEN |
Quantidade de dados gravados nos arquivos de log. Unidade: bytes. |
|
INNODB_ACTIVE_VIEW_CNT |
Número de visualizações ativas. |
|
INNODB_RSEG_HISTORY_LEN |
Tamanho da lista de histórico no segmento de rollback. |
|
INNODB_AVG_COMMIT_TRXTIME |
Tempo médio de confirmação de transação. |
|
INNODB_MAX_COMMIT_TRXTIME |
Tempo máximo de confirmação de transação. |
|
INNODB_DBLWR_PAGES_WRITTEN |
Número de páginas gravadas por operações de doublewrite. |
Como usar o Performance Agent
-
Consulte diretamente a tabela do sistema para obter os dados de desempenho. Por exemplo:
-
Para consultar a utilização de CPU e o uso de memória dos últimos 30 segundos:
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) -
Para consultar o número de linhas lidas e inseridas no InnoDB nos últimos 30 segundos:
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)
-
Conecte-se a uma plataforma de monitoramento, como o Grafana, para monitorar o desempenho em tempo real.
