Я пытаюсь иметь сервер, с которым несколько клиентов должны открывать веб-сокет и отправлять данные. Но похоже, что многие клиенты не могут установить соединение.
На сервере, когда я выполняю lsof
или netstat -an
, я вижу, что многие соединения отображаются в состоянии FIN_WAIT1
и FIN_WAIT2
, кроме соединений, находящихся в состоянии ESTABLISHED
. На данный момент ulimit для открытых файлов составляет 1024. Будут ли соединения, застрявшие в этих двух состояниях, учитываться в списке открытых файлов? Если это так, то лимит 1024 будет исчерпан очень скоро.
/proc/sys/net/ipv4/tcp_orphan_retries
равно 0
, что эквивалентно 8
, кажется https://serverfault.com/questions/274212/what-does-tcp-orphan-retries-set-to-0-mean/408882#408882
Я проконсультировался по этой ссылке: https://serverfault.com/questions/7689/how-do-i-get-rid-of-sockets-in-fin-wait1-state
Но я мало что понимаю. Я читал об этих двух состояниях в Интернете и понимаю, что они являются частью протокола, но я бы предпочел, чтобы соединения не зависали в состояниях, в которых они бесполезны. Могу ли я сделать это как-то? Должен ли я изменить ulimit? Но это просто означало бы, что проблема возникнет в момент времени x+y вместо x.