У меня есть сервер приложений JBoss и сервер базы данных Postgres на разных машинах. Я устраняю проблемы с TCP-соединениями между ними (потому что в приложении постоянно заканчиваются соединения с базой данных).
Я вижу это, и в этом нет смысла:
Машины представляют собой виртуальные машины VMware под управлением Centos, управляемые облачным провайдером (не AWS). Между машинами нет брандмауэра (согласно Слишком много установленных подключений осталось открытым), что действительно похоже на аналогичное поведение.
Не знаю, что еще могло вызвать эту асимметрию?
Очень странно. Похоже, сервер приложений просто не получает FIN
s и кто-то другой, отвечая на них, это может быть проблема вашего облачного провайдера. Однако вы все равно можете попробовать обходной путь для этой проблемы и время от времени закрывать старые соединения. Видеть Есть ли тайм-аут для простаивающих соединений PostgreSQL? для получения дополнительной информации о том, как это сделать.
Для удобства всех, кто видел такое поведение, это было подтверждено как проблема с настройкой VMware на стороне поставщика облачных услуг, как предложил @Shmuel Hazan.
Если я правильно понял, это была проблема с краем VShield, поэтому наблюдаемое поведение соответствовало поведению брандмауэра, прерывающего соединение.
Как только провайдер устранил неисправность, нормальное обслуживание было восстановлено.