Verifique as configurações de tempo limite do soquete TCP/IP em todos os roteadores/comutadores entre os servidores de aplicativos e os servidores de banco de dados. Ative também o log no lado do banco de dados e observe o ciclo de vida completo da conexão e compare o tempo com os erros em seu aplicativo. Sugiro ativar as seguintes configurações no postgresql.conf até ter uma ideia do que procurar:
log_connections = on
log_disconnections = on
log_statement = all
Eles podem ser ativados com um SIGHUP do processo postgres (ou execute "SELECT pg_reload_conf();" como um superusuário do banco de dados.
Serei que você tem uma "conexão fechada por host remoto" ou algo semelhante à última mensagem antes que a desconexão real seja registrada.
Eu já vi isso antes e foram as configurações de tempo limite em um switch intermediário causando isso.