IIS на Server 2012 R2 очень медленно обслуживает удаленных клиентов
Мы пытались отлаживать очень медленные скорости передачи для удаленных клиентов, попавших на наш веб-сервер (IIS на 2k12 R2).
RTT для клиента составляет около 150 мс, и мы изо всех сил пытаемся получить более 500 кбит / с из нашего соединения со скоростью 100 Мбит / с. Клиент может проверить скорость загрузки более 300 Мбит / с на локальный сервер тестирования скорости, поэтому мы не считаем, что проблема на стороне клиента, а на стороне отправки.
Wireshark показывает, что отправитель (IIS) никогда не отправляет более трех пакетов, не ожидая подтверждения. Максимальное количество байт в полете, которое мы когда-либо видели, составляет около 20 КБ. Окно получения, объявленное клиентом, составляет около 256 КБ, поэтому отправитель просто не заполняет окно.
Мы много чего пытались исправить, включая отключение всех опций выгрузки в настройках NIC, отключение эвристики и т. Д., И это сводит нас с ума, поскольку это означает, что наша серверная инфраструктура для этой цели практически непригодна.
Маршрутизатор: C2911/K9. Серверы: Dell R730 с сетевыми платами Broadcomm с гипервизорами Hyper-V 2012 R2.
Мы можем видеть скорость загрузки на локальные серверы тестирования скорости, насыщая нашу ссылку, но я верю только потому, что задержка очень низкая. Временные метки Wireshark показывают, что отправитель ожидает ACK, которых он не должен ждать.
Конечно, IIS не выполняет последовательную блокировку посылок с небольшими буферами или чем-то еще?
1 ответ
Мы разыскали проблему для этого случая. Это была неправильная настройка порта на нашем маршрутизаторе, стоящая перед нашим демаркационным коммутатором. Интерфейс маршрутизатора был установлен на 1 Гбит, но оптоволокно на 100 Мбит. Управление потоком также было отключено на порту коммутатора, поэтому маршрутизатор заполнял коммутатор, вызывая сброс пакетов.
Увеличение скорости интерфейса маршрутизатора до 100 Мбит решило проблему сброса пакетов.