LINUX.ORG.RU
ФорумAdmin

Убить TCP connect


0

0

Имеется: два сервиса на разных машинах общаются по TCP. Иногда порядка 2 х раз в день рвётся соединение между ними. При этом, один его нормально теряет и заново пытается установить. У второго оно повисает в состоянии ESTABLISHED. Почему такое может происходить? Кто виноват: tcp/ip стэк, программа, сеть?

Возникает надобность его(коннект этот) пристрелить. Как? tcpkill - не работает, потому как ни одного пакета после этого глюка не проходит и tcpkill не может сформировать пакет и послать RST. (Ну или я исходники недопонял его). Дескриптор сокета я могу легко найти в /proc/PID. Можно его как-нить пристрелить через /proc? Спасибо.

Re: Убить TCP connect

у которого коннект виснет - ядро 2.6.9, у второго - 2.6.15, почитать что ли changelog'и =)

Nekto0n ()

Re: Убить TCP connect

Может включить tcp keepalive - тогда он сам будет прибивать отвалившееся соединение по таймауту...

slav ★★ ()
Ответ на: Re: Убить TCP connect от slav

Re: Убить TCP connect

>Может включить tcp keepalive - тогда он сам будет прибивать отвалившееся соединение по таймауту...

Будет ли это работать(т.е пакеты уходить по тайм-ауту), если соединение в состоянии ESTABLISHED повисает? # cat /proc/sys/net/ipv4/tcp_keepalive_time 7200

# cat /proc/sys/net/ipv4/tcp_keepalive_intvl 75

# cat /proc/sys/net/ipv4/tcp_keepalive_probes 9 Вроде как должно работать, а соединение всё равно висит хоть сколько.

Nekto0n ()
Ответ на: Re: Убить TCP connect от Nekto0n

Re: Убить TCP connect

По-моему, чтобы keepalive использовался, программа должна установить соответсвующую опцию у сокета. По умолчанию это отключено.

slav ★★ ()

Re: Убить TCP connect

>два сервиса на разных машинах общаются по TCP

Кто клиент, кто сервер? Или там 2 сервера работают? Не совсем понятна схема работы. Что-то уж через-чур странно, что ESTABLISHED просто так висит. Должен уходить в TIMEOUT. tcpdump для висящего соединения.

markevichus ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.