Estou usando uma máquina baseada em código aberto (RHEL 6.2) executando o software SIEM. Quando executo o top
comando, vejo postgres
e postmaster
ambos com 96% de uso da CPU. Existe uma maneira de identificar ou ver o que está causando o empilhamento desses serviços?
postgresql
asadz
fonte
fonte
postgress
épostgres
e você acabou copiado à mão.Respostas:
Você pode associar um ID de back-end específico do Postgres a um ID de processo do
pg_stat_activity
sistema usando a tabela do sistema.SELECT pid, datname, usename, query FROM pg_stat_activity;
pode ser um bom ponto de partida.Depois de saber quais consultas estão sendo executadas, você poderá investigar mais (
EXPLAIN
/EXPLAIN ANALYZE
; verificar bloqueios etc.)fonte
WHERE
cláusula, mas se você não tiver um grande número de PIDs, será fácil de pesquisar em toda a saída. O manual do Postgres possui detalhes adicionais sobre o que você pode obterpg_stat_activity
, além de outras tabelas de coletor de estatísticas (que podem ajudá-lo se o seu problema não for uma consulta do usuário).Eu estava tendo o mesmo problema. O postgresql está configurado no AWS RDS e estava com 100% de utilização da CPU, mesmo depois de aumentar a instância. Depurei o método mostrado aqui e um dos métodos funcionou para mim.
Eu verifiquei a consulta em execução por mais tempo e soube que determinadas consultas estavam emperradas e em execução há mais de 3-4 horas. Para verificar desde quanto tempo a consulta está em execução, execute o seguinte comando:
Se isso for mais de uma hora, esse é o problema. Mate a conexão de longa duração e limite a idade máxima da conexão do lado do aplicativo.
fonte
Se este é realmente o postmaster usando toda essa CPU, é provável que você tenha problemas de contenção de bloqueio, provavelmente devido a muito alto
max_connections
. Considere diminuirmax_connections
e usar um pooler de conexões, se esse for o caso.Caso contrário: detalhes, por favor. Saída total de
top -b -n 1
para começar.fonte