Sprawdź ustawienia limitu czasu gniazda TCP/IP na wszystkich routerach/przełącznikach między serwerami aplikacji a serwerami baz danych. Włącz także logowanie po stronie bazy danych i obserwuj pełny cykl życia połączenia oraz porównuj czasy z błędami w Twojej aplikacji. Proponuję włączyć następujące ustawienia w postgresql.conf, dopóki nie zorientujesz się, czego szukać:
log_connections = on
log_disconnections = on
log_statement = all
Można je aktywować za pomocą SIGHUP procesu postgres (lub uruchomić "SELECT pg_reload_conf();" jako superużytkownik bazy danych).
Będę informował, że masz „połączenie zamknięte przez zdalnego hosta” lub coś podobnego do ostatniej wiadomości przed logowaniem faktycznego rozłączenia.
Widziałem to już wcześniej i spowodowały to ustawienia limitu czasu na przełączniku pośrednim.