Temos um PostgreSQL (com extensão TimescaleDB) em execução em um servidor Ubuntu, cuja carga tem aumentado constantemente ao longo do ano.
Gostaríamos de manter a carga sob controle. Para CPU, ou carga, gostaríamos de identificar consultas que estão causando o aumento na carga, pois algumas das consultas são provavelmente desnecessárias; a frequência pode ser diminuída, e assim por diante.
Qual seria a melhor maneira de mapear consultas e/ou aplicações PostgreSQL para uso de CPU? Especificamente, como essa não é uma consulta única, deve haver algum tipo de coleta de estatísticas por um período maior de tempo.
Atualmente, estamos usando o Datadog para monitorar o PostgreSQL e o servidor, mas ficaremos felizes em considerar quaisquer opções.
A maneira canônica de encontrar suas consultas que mais consomem tempo é habilitar pg_tat_statements.
Edite
postgresql.conf
, adicionepg_stat_statements
eshared_preload_libraries
defina a opção personalizadapg_stat_statements.track = all
comopostgresql.conf
. Em seguida, reinicie o servidor PostgreSQL e a extensão começará a rastrear estatísticas de execução de instruções.Depois de coletar dados suficientes, crie a extensão:
e encontre as declarações que mais consomem tempo com