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

Почему одному из моих серверов LAN часто требуется 21 секунда для подключения?

Используя сочетание клиентов Windows 7 и Windows 10, одному из моих серверов в локальной сети обычно требуется 21 секунда для установления соединения. Этот LAN-сервер работает под управлением Windows Server 2012-R2 и размещает TFS 2015 на порте IIS 8080. Игра с Fiddler показывает, что соединение затрачивает 21 секунду на установление TCP-соединения.

Используя wirehark, я вижу следующий разговор. Заказано по времени.

Time  0 : IPV6 - TCP 49371 → 8080 [SYN] Seq=0 Win=8192 Len=0 MSS=1440 WS=256 SACK_PERM=1  
Time  3 : IPV6 - TCP 49371 → 8080 [SYN] Seq=0 Win=8192 Len=0 MSS=1440 WS=256 SACK_PERM=1
Time  9 : IPV6 - TCP 49371 → 8080 [SYN] Seq=0 Win=8192 Len=0 MSS=1440 SACK_PERM=1
Time 21 : IPV4 - TCP 49372 → 8080 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256
                SACK_PERM=1
Time 21 : IPV4 - TCP 8080 → 49372 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460 WS=256
                SACK_PERM=1
Time 21 : IPV4 - TCP    49372 → 8080 [ACK] Seq=1 Ack=1  Win=65536 Len=0
Time 21+: IPV4 - HTTP chatter
                 (at this point the connection has been established successfully)

Кажется, это соответствует диаграмме порта с брандмауэром на http://www.codeproject.com/Articles/363088/TCP-and-Port-Filtering-Firewalls-with-WinSock (т.е. таймаут 3 секунды, таймаут 6 секунд, таймаут 12 секунд). Однако при включении ведения журнала брандмауэра Windows на клиенте и сервере отброшенные пакеты не отображаются.

Кажется, это зависит от сервера; Я могу подключиться к другим серверам (в локальной сети и за ее пределами) без этой проблемы. Если я явно указываю IP-адрес IPV4 или IPV6, соединение устанавливается успешно (и в журналах wirehark в этом сценарии отображается только трафик IPV4 или IPV6).

Обратите внимание, что все описанное выше является подозрительным, так как эта проблема очень устойчива к диагностике:
1. Если два запроса выполняются в одном приложении, второй запрос отвечает быстро (если запросы не находятся достаточно далеко друг от друга?).
2. Иногда изменение настроек на сервере (или, может быть, даже на клиенте?) Временно устраняет проблему (до перезагрузки клиента?).

Редактировать: Ниже показано, как выглядит трассировка Wireshark, когда сервер начинает работать:

Time 0 : IPV6 - 60459 → 8080 [SYN] Seq=0 Win=8192 Len=0 MSS=1440 WS=256 SACK_PERM=1
Time 0 : IPV6 - 8080 → 60459 [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1440 WS=256 
                SACK_PERM=1
Time 0 : IPV6 - 60459 → 8080 [ACK] Seq=1 Ack=1 Win=66048 Len=0
Time 0+: IPV6 - HTTP Chatter
                (at this point the connection has been established successfully)

Вопрос: Как я могу изменить сервер, чтобы избежать этой 21-секундной задержки подключения?

Предполагаемая конфигурация свойств соединения IPV4 заключалась в том, чтобы на машине была пара жестко заданных DNS-серверов IPV4, каждый из которых был контроллером домена. Однако фактическая конфигурация заключалась в том, что один из двух жестко заданных DNS-серверов был контроллером домена, а другой - бывшим контроллером домена, последний из которых работал под управлением Server2003 и не поддерживал ipv6. Я отмечу, что предыдущий сервер был точно так же неправильно настроен, но предыдущий сервер был машиной Server2003 и не имел поддержки IPV6.

После обновления этого параметра около 2 дней назад проблема TCP не возникала. Хотя предыдущая настройка была явно неправильной, я не уверен, что неправильная конфигурация IPV4 является конкретной причиной сбоя TCP / IP. Я изучаю эту проблему около месяца, и проблема периодически исчезает и все время появляется снова.