Есть ли опция тайм-аута для удаленного доступа к базе данных PostgreSQL?

9

Я работаю через pgAdmin III на удаленной базе данных PostgreSQL. После не очень долгого периода (скажем, 10-15 минут), ничего не делая в pgAdmin, соединение автоматически истекает. Поэтому у меня появляется сообщение об ошибке, спрашивающее, хочу ли я повторно подключиться. Это займет около 10 сек. и структура базы данных рушится, поэтому мне приходится заново открывать схемы, которые я ранее открывал.

Есть ли способ изменить параметр тайм-аута где-нибудь, чтобы предотвратить истечение срока действия соединения?

wiltomap
источник

Ответы:

8

Разрыв соединения с сервером PostgreSQL через 10-15 минут почти наверняка вызван межсетевым экраном отслеживания состояния (возможно, с использованием трансляции сетевых адресов (NAT)) между клиентом и сервером. Для многих таких брандмауэров время ожидания по умолчанию составляет 15 минут (900 секунд).

Три серверные параметры, tcp_keepalives_idle, tcp_keepalives_interval, tcp_keepalives_countпредназначены для помощи в таких ситуациях. См. Документацию, расположенную здесь: http://www.postgresql.org/docs/9.2/static/runtime-config-connection.html#GUC-TCP-KEEPALIVES-IDLE

Есть также на стороне клиента параметры для этого: keepalives, keepalives_idle, keepalives_interval, keepalives_count, которые вы можете установить на связи. См. Документацию, расположенную здесь: http://www.postgresql.org/docs/9.2/static/libpq-connect.html#LIBPQ-KEEPALIVES.

Колин т Харт
источник
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
Пол Уайт 9