Что означает tcpOutAckDelayed и что заставляет его подсчитывать? это признак проблемы или нет?
Солнце доко не ясно!
Спасибо, Дэн
Отложенный ACK - это в основном умный стек tcp. Вставлено:
Отложенный ACK означает, что TCP не подтверждает сразу каждый полученный сегмент TCP. (Читая следующее, думайте об интерактивном сеансе ssh, а не о массовой передаче.) Если вы получаете один единственный сегмент TCP, вы ждете 100-200 мс, исходя из предположения, что принимающее приложение, вероятно, сгенерирует какой-либо ответ. (Например, каждый раз, когда sshd получает нажатие клавиши, он обычно генерирует в ответ эхо символа.) Вы не хотите, чтобы стек TCP отправлял пустой ACK, за которым следует пакет данных TCP каждый раз на 1 мс позже, поэтому вы немного задерживаете , поэтому вы можете объединить ACK и пакет данных в один. Все идет нормально. Но что, если приложение не генерирует никаких данных ответа? Что ж, в таком случае какая разница может иметь небольшая задержка? Если данных ответа нет, значит, клиент не может ничего ждать, не так ли? Что ж, клиент прикладного уровня не может ничего ждать, но стек TCP в конце может ждать: именно здесь алгоритм Нэгла вступает в игру:
Узнать больше на Проблемы производительности TCP, вызванные взаимодействием между алгоритмом Нэгла и отложенным ACK