Как я избавляюсь от сокетов в состоянии FIN_WAIT1?

Я должен все же видеть ОС - Linux, OSX, Windows, что имеет Вас - который не увеличился в размере от версии до следующей версии. Если дисковое пространство является большим беспокойством, рассмотрите установку 'мини-ISO' (это - то, чем это называют в Ubuntu), таким образом, можно установить абсолютный минимум, в котором Вы нуждаетесь.

18
задан 3 March 2015 в 04:53
9 ответов
# record what tcp_max_orphans's current value
original_value=$(cat /proc/sys/net/ipv4/tcp_max_orphans)

#set the tcp_max_orphans to 0 temporarily
echo 0 > /proc/sys/net/ipv4/tcp_max_orphans

# watch /var/log/messages
# it will split out "kernel: TCP: too many of orphaned sockets"
# it won't take long for the connections to be killed

# restore the value of tcp_max_orphans whatever it was before. 
echo $original_value > /proc/sys/net/ipv4/tcp_max_orphans

# verify with 
netstat -an|grep FIN_WAIT1
18
ответ дан 2 December 2019 в 20:21

Необходимо смочь установить тайм-аут с /proc/sys/net/ipv4/tcp_fin_timeout.

Действительно, кажется, нет никакого способа очистить сокет вручную.

7
ответ дан 2 December 2019 в 20:21
  • 1
    @Andrew B: Кажется этим it' s не возможный удалить принятые ответы. –  innaM 11 October 2014 в 15:40

FIN_WAIT1

Приложение на локальной машине закрыло соединение. Признак этого был отправлен на удаленную машину.

Вы приложение закрыло свою сторону соединения, сокет, теперь ожидаете удаленной стороны для подтверждения того завершения. Если у Вас есть проблема с большим количеством тех сокетов, сохраненных в FIN_WAIT1 затем, необходимо последовать совету Manni выше.

1
ответ дан 2 December 2019 в 20:21

Возможно, tcpkill помог бы? Больше здесь: http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php

-1
ответ дан 2 December 2019 в 20:21

/proc/sys/net/ipv4/tcp_fin_timeout тайм-аут состояния FIN-WAIT-2, не FIN-WAIT-1. Необходимо пойти с маршрутом tcpkill, или можно попытаться играть с временами проверки активности под /proc/sys/net/ipv4/tcp_keepalive_* вызвать уничтожение ТАК.

5
ответ дан 2 December 2019 в 20:21

Кажется, что установка tcp_orphan_retries управляет, сколько попыток будет сделано, прежде чем порт сервера меньше выпущен. Это было 0 здесь после установки его к 1, порты закончились.

HTH

6
ответ дан 2 December 2019 в 20:21

это может помочь:

net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_retries2 = 2
net.ipv4.tcp_orphan_retries = 1
net.ipv4.tcp_reordering = 5
net.ipv4.tcp_retrans_collapse = 0
-4
ответ дан 2 December 2019 в 20:21

Выполнение этих шагов под корневым идентификатором, и он очистился для меня:

Захватить настройку ядра для изменения в переменной

$ orig_orphans=$(sysctl -a|grep tcp_max_orph|cut -f3 -d' ')

Временно установить максимальное количество сирот на 0

$ sysctl -w net.ipv4.tcp_max_orphans=0

Проверить, чтобы убедитесь, что проблемный порт больше не используется

$ netstat -np|grep 9716

Подождите немного и при необходимости повторите вышеуказанный шаг, пока вышеуказанная команда не вернет никаких строк

Сбросьте параметр ядра tcp_max_orphans обратно к исходному значению из переменной выше

$ sysctl -w net.ipv4.tcp_max_orphans=$orig_orphans
2
ответ дан 2 December 2019 в 20:21

В ядре linux> = 4.9 вы можете использовать команду ss из iproute2 с ключом -K

ss -K dst 192.168.1.214 dport = 49029 ядро должно быть скомпилировано с включенной опцией CONFIG_INET_DIAG_DESTROY.

через https://unix.stackexchange.com/a/511691/43898

0
ответ дан 2 December 2019 в 20:21

Теги

Похожие вопросы