суббота, 14 мая 2011 г.

Уменьшение количества соединений в состоянии TIME_WAIT

Как я уже рассказывал в одной из предыдущих заметок, соединение может еще долгое время находится в состоянии TIME_WAIT, согласно RFC 1323 это время должно равнятся 2 минутам, двум msl (Maximum Segment Lifetime). MSL - это время, в течение которого сегмент может путешествовать по сети (RFC рекомендует 60 секунд). На загруженном сервере при таком значении msl число соединений time_wait расчет очень быстро, к тому же упомянутый rfc составлялся достаточно давно и пропускная способность каналов с тех пор возрасла многократно, поэтому многие уменьшают это значение.
Во FreeBSD есть переменная sysctl net.inet.tcp.msl, по умолчанию равная 30 секундам. Можно уменьшить его до 20 или даже 15 секунд.
# echo "net.inet.tcp.msl=15000" >> /etc/sysctl.conf
# /etc/rc.d/sysctl start
В linux немного сложнее, там msl захардкожено в ядре в файле /net/tcp.h
#define TCP_TIMEWAIT_LEN (60*HZ)

1 комментарий:

  1. "net.inet.tcp.msl=15"

    надо не 15 а 15000. почитайте лучше спецификацию этого параметра а то с 15 будет вообще почти мгновенно

    =)

    ОтветитьУдалить