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

Предотвращение истечения времени ожидания TCP-соединений при перезапуске службы

В Ubuntu 14.04 приложение обменивается данными с клиентами с интервалом от 1 до 1 в минуту. Однако сервис необходимо регулярно перезапускать, и это приводит к разрыву / таймауту всех соединений. Для перезапуска службы требуется всего около 10-15 секунд.

Можно ли настроить систему таким образом, чтобы эти соединения не прерывались по таймауту / сбрасывались при перезапуске службы?

$ ulimit -n
1048576
$ cat /proc/sys/net/ipv4/tcp_fin_timeout
60
$ cat /proc/sys/net/ipv4/tcp_tw_recycle
0
$ cat /proc/sys/net/ipv4/tcp_tw_reuse
0

Одним словом, нет.

Когда вы перезапускаете службу, вы должны убить процесс, который удерживает дескрипторы файлов сокета открытыми. Предполагая, что это сеансы TCP, это означает, что сеанс TCP должен завершиться (FIN) и новый сеанс должен быть установлен (SYN) после перезапуска службы и нового процесса, который снова прослушивает сокет.

Зачем нужно перезапускать сервис? Вы не должны. Решите это, и ваша проблема исчезнет.