Назад | Перейти на главную страницу

postgres сбрасывает соединения с клиентов Windows

Postgres, похоже, теряет соединения от клиентов. Клиенты получают сообщение об ошибке, обычно это означает, что соединение было закрыто сервером, в то время как в то же время сервер получает запись в журнале. Пример:

Nov 14 17:54:15 dev-db0 postgres[29523]: [219-1] 2014-11-14 17:54:15 GMT [29523]: [2-1] user=******,db=******,remote=10.0.13.1(51491) LOG:  could not receive data from client: Connection timed out

Насколько я понимаю, это в первую очередь происходит для клиентов Windows и происходит на нескольких разных серверах баз данных, физических и виртуальных. Я впервые узнал об этой проблеме, когда у пользователя, пытающегося получить доступ к postgres через VPN, возникла проблема, но проверка журналов показывает, что это происходит и с локальными клиентами, хотя VPN, похоже, делает это чаще.

Я перепробовал все настройки keepalive в postgresql.conf (tcp_keepalives_idle, tcp_keepalives_interval и tcp_keepalives_count), а также туннелирование соединения с базой данных через SSH, но, похоже, это не имеет никакого значения.

Хотя на стороне сервера указывается тайм-аут, на стороне клиента обычно говорится о сбросе соединения одноранговым узлом или аналогичном. Самый надежный способ воспроизвести это - выполнить большие / длинные запросы; pgadmin и tomcat кажутся более восприимчивыми к нему, чем psql.