Eu tive uma questão semelhante. Foi devido a - algumas transações estavam ficando presas e em execução por muito tempo. Assim, a utilização da CPU estava em 100% o tempo todo. O comando a seguir ajudou a descobrir as conexões em execução por mais tempo:
SELECT max(now() - xact_start) FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'active');
Este comando mostra o tempo desde quando uma conexão está em execução. Este tempo não deve ser superior a uma hora. Então, matar a conexão que estava em execução há muito tempo ou travada em qualquer ponto funcionou para mim. Eu segui esta postagem para monitorar e resolver meu problema. Post inclui muitos comandos úteis para monitorar esta situação.