Я строю рекламный сервер. В тестах я вижу много состояния TIME_WAIT из-за использования в памяти Redis Redis.

Форумы предлагали снизить значение времени ожидания из реестра.

Есть ли недостатки?

1 ответ1

2

Целью состояния TIME_WAIT является обеспечение надежного разрыва соединения. Надежный разрыв соединения, в свою очередь, защищает будущие соединения от предыдущих оконечных сегментов соединения (сегментов FIN). Таким образом, понижая значение "time_wait" (точнее, максимальное время жизни сегмента, см. Ниже), вы рискуете непреднамеренно прервать активные соединения TCP.

Почему это так? Для надежного разрыва соединения TCP должен обмениваться тремя сообщениями, аналогичными трехсторонней связи. Активно закрывающийся конец остается в TIME_WAIT вдвое больше максимального времени жизни сегмента (MSL) после отправки окончательного подтверждения разрыва (ACK). Это связано с тем, что ваш последний ACK мог быть потерян, и в этом случае удаленный конец отключился бы, повторно отправил сегмент FIN и снова проследил за этим последним ACK с локального конца. Если вы понижаете значение MSL, становится более вероятным, что пара сокетов вскоре будет повторно использована, когда в удаленном конце сети все еще есть сегмент FIN. Такой сегмент впоследствии может быть ошибочно принят за запрос на разрыв нового соединения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .