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

Что означает TCP: слишком много потерянных сокетов?

Когда я использую dmesg для просмотра сообщений ядра Linux, я вижу поток ....

TCP: слишком много потерянных сокетов

Сообщения. Я предполагаю, что это сокеты, которые зависают в TIME_WAIT после закрытия и ждут, чтобы их очистили. Мне интересно узнать, повлияет ли это на службы, работающие на этих серверах.

Из LARTC КАК:

/proc/sys/net/ipv4/tcp_max_orphans

Maximal number of TCP sockets not attached to any user file handle, 
held by system. If this number is exceeded orphaned connections are
reset immediately and warning is printed. This limit exists only to
prevent simple DoS attacks, you _must_ not rely on this or lower the
limit artificially, but rather increase it (probably, after increasing
installed memory), if network conditions require more than default value,
and tune network services to linger and kill such states more aggressively.

Let me remind you again: each orphan eats up to  64K of unswappable memory.

Реализация функции ограничения количества детей-сирот есть Вот.

Возможная причина этой ошибки - в системе не хватает памяти сокета. Вам нужно либо увеличить объем памяти сокета (net.ipv4.tcp_mem), либо выяснить причину потребления памяти

        [root@test ~]# cat /proc/sys/net/ipv4/tcp_mem
         362688  483584  725376

Итак, здесь, в моей системе, вы можете увидеть 725376 (страниц) * 4096 = 2971140096 байт / 1024 * 1024 = 708 мегабайт

Таким образом, эти 708 мегабайт памяти используются приложением для отправки и получения данных, а также используются моим интерфейсом обратной связи. Если на каком-либо этапе это значение достигнуто, дальнейший сокет не может быть создан до тех пор, пока эта память не будет освобождена из приложения, которое удерживает сокет открытым. который вы можете определить с помощью netstat -antulp.