2015-01-21 1 views
2

Я начинающий в конфигурации сервера Linux, и у меня нет много знаний об этом. Я использую корневой сервер linux ubuntu для веб-сайта с базой данных postgres. Моя операционная система на моем ПК - это окна 7.борется с настройками тайм-аута подключения на ubuntu с postgresql

Через несколько минут (я не уверен, сколько времени потребуется, может быть, 5 минут или около того, не так много), ничего не делая, я теряю соединение, которое действительно раздражает. Я googled, как это исправить, но на самом деле не нашел решения или не понял их.

Например, я пытался обновить мою postgresql.conf и редактировать эти значения:

#tcp_keepalives_idle 
#tcp_keepalives_interval   
#tcp_keepalives_count 

, которые не очень помогают. Я хочу иметь возможность простоя в течение 30 минут, не теряя связи.

Затем я прочитал еще одно решение:

http://www.gnugk.org/keepalive.html

Я честно не понимаю, что эти строки я должен добавить, для. Потому что, когда я проверить это:

sysctl -A | grep net.ipv4 

он показывает мне:

net.ipv4.tcp_keepalive_intvl = 75 
net.ipv4.tcp_keepalive_probes = 9 
net.ipv4.tcp_keepalive_time = 7200 

что должно означать, что я не потеряю связь в течение 2 часов, не так ли?

Я также не понимаю, для чего нужны строки ... Означает ли это, что каждая служба, к которой подключен клиент, все равно будет подключена в течение 2 часов, даже если он неактивен? Неважно, если это, например, postgresql или ftp или что-то еще?

Пожалуйста, помогите! Спасибо!

Андре

+0

Понимаете ли вы, что 'tcp_keepalives_idle' и' tcp_keepalives_interval' должны быть ** ниже **, чем время простоя, которое вы хотите иметь? Например, установите их на 60 секунд. –

ответ

4

Хорошо, кажется, что я решил проблему. Несмотря на то, что здесь нет ответа, я просто хочу объяснить свое решение.

Мой ISP, похоже, очень быстро разбивает мое соединение, когда я простаиваю на связи всего несколько минут. Кажется, это проблема с CGN (NAT для Carrier-grade).

Я решил проблему, чтобы установить пакеты keepalive с sysctl.

Таким образом, я использовал эти значения параметров:

net.ipv4.tcp_keepalive_intvl = 60 
net.ipv4.tcp_keepalive_probes = 20 
net.ipv4.tcp_keepalive_time = 180 

, что означает, что через 3 минуты первого пакет KeepAlive будет отправлен и когда нет соединения живой каждой минуты (60 секунд) новый поддерживать пакет будет быть отправлен и это 20 раз. В целом, это предотвращает разрыв моего соединения.

Возможно, если у кого-то тоже есть проблемы, это может быть решением для него.

Смежные вопросы