Via pg_proctab()
, posso ver que as conexões da nossa aplicação podem usar até 800 MB de RAM por conexão no postgres. Geralmente até 400 MB. (Atualização para esclarecer após um comentário: essas conexões são de pools de conexões, na maioria das vezes ficam inativas, com consultas entre elas. Os 400 MB são medidos quando a conexão está inativa.)
Gostaria de investigar em que consistem esses 400 MB. Por que 400 MB e não apenas 40 MB, por exemplo? Já olhei os objetos de conexão jdbc no lado da aplicação e não encontrei nada fora do comum.
Meu palpite (maluco) seria que o alto uso de RAM vem do fato de termos muitas partições em nossas tabelas.
O postgres fornece uma maneira de examinar a RAM dos processos de conexões? Estamos no AWS RDS, então o melhor caso seria uma forma em que eu não precisasse de acesso ao servidor.