Estou depurando um problema de alta carga de CPU com o servidor flexível Azure PostgreSQL. Na janela de tempo em que o uso da CPU aumenta, estou vendo muitas consultas de utilitários. Eles não demoram muito para serem processados, mas existem centenas de milhares deles.
As consultas são todas DISCARD ALL
consultas. Para que servem essas consultas e é normal ver tantas delas?
DISCARD redefine sua conexão com o banco de dados para o "padrão de fábrica".
Acho que você está usando alguma forma de pool de conexões. Isso é bom porque abrir uma conexão consome uma quantidade significativa de CPU. Porém, antes de reutilizar uma conexão, ela deve ser redefinida, que é o que DISCARD faz.
O elevado número de DISCARDs é provavelmente apenas uma consequência de um grande número de clientes obtendo conexões do pool para realizar algum trabalho. Portanto, é um sintoma do seu problema, mas não a causa.
Se você está vendo um grande número de DISCARDs em comparação com outras consultas, então... talvez você tenha algo que abre e fecha uma conexão em um loop, ou abre uma conexão toda vez que deseja fazer uma consulta em vez de mantê-la aberta .