TCP: time wait bucket table overflow
Среди возможной причины предполагаем огромное число TIME_WAIT соединений:
netstat -npt | grep TIME_WAIT | wc -l
710
Вот один из вариантов фикса от Red Hat: http://kbase.redhat.com/faq/docs/DOC-1253
Как я понял, число TIME WAIT можно увеличить, увеличив следующую переменную:
cat /proc/sys/net/ipv4/tcp_max_tw_buckets
720000
Увеличим вдвое:
echo 1440000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
Предположительно, проблема решилась (ну или просто мессаджи перестали сыпаться в dmesg) :)
Я так навскидку не помню, но вроде это лечилось путем _уменьшения_ времени TIME_WAIT, а не увеличения числа buckets. Насколько я помню устройство TCP, TIME_WAIT сознательно сделано очень избыточным, чтобы после закрытия соединения запоздавшие пакеты не вызывали отправку RST. 120 секунд, кажется? За это время можно установить и тут же завершить много миллионов соединений... Думаю, в реальной жизни секунд 5 должно хватить с запасом ;)
ReplyDeleteЗа подробностями не ко мне, а в Google =)
Да, вот только как я понимаю, в Linux нет нормального средства для уменьшения TIME_WAIT.
ReplyDeleteБолее обширные советы по настройке:
ReplyDeletehttp://centos.ultra-sr.ru/optimization-network-nginx/