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

Медленное первое обращение к веб-службе ASMX после обновления до Windows Server 2008, IIS 7.5

Недавно у нас был построен новый производственный сервер для обслуживания бизнес-приложения ASP.NET 4.0. Технические характеристики нового сервера: Windows Server 2008 R2, 2-ядерный Xenon, IIS 7.5, 2 ГБ оперативной памяти (скоро будет 4 ГБ). До появления нового сервера мы запускали / тестировали приложение на Windows Server 2003, одноядерный, IIS 6, 4 Гб оперативной памяти.

Наше приложение использует веб-службу ASMX для проверки логинов в Active Directory с помощью LDAP.

Мы сразу заметили значительное увеличение времени отклика при обращении к веб-службе с нового сервера, но только при «первом обращении». Как ни странно, в 99,9% случаев время отклика для этого «первого попадания» составляет 15 секунд (буквально между 15000 и 15999 мс). Последующие обращения приводят к типичному времени ответа (<100–300 мс) для всех пользователей. Однако ожидание более 2–3 минут приведет к повторению этого «первого попадания».

Время отклика той же службы на старом сервере никогда не превышает 300 мс ... Даже после перезапуска IIS6.

Маршрут трассировки как для старого, так и для нового сервера одинаков. То же самое со временем отклика Ping.

После долгих испытаний единственный надежный способ воспроизвести (и, таким образом, определить «первое попадание»):

а) подождите 2-3 минуты, или

б) переработать пул приложений или

в) перезапустить IIS

Приложение работает в собственном пуле приложений с использованием .NET 4.0 Framework.

Вот текущее состояние приложения и IIS:

  • Вся переработка отключена для всех пулов (тайм-аут простоя и фиксированные интервалы)
  • Нет отладочных ссылок в Web.config
  • Приложение предварительно скомпилировано (опубликовано через Visual Studio)
  • Управляемый трубопровод = интегрированный
  • Identity = NetworkService
  • Работа в 64-битном режиме (переход в 32-битный режим не повлиял)

Сначала я подумал, что это проблема утилизации, так как я видел много сообщений по этому поводу. Однако это не объясняет, почему поведение «первого удара» происходит после ожидания всего 2-3 минуты.

Единственное, чего я не пробовал, так это разминку IIS. Это потому, что а) у меня нет прав на его установку и б) на мой взгляд, «первым попаданием» является фактическая страница входа, а не служба (если я не ошибаюсь). Страница входа загружается менее чем за 300 мс, независимо от того, «первое попадание» или нет.


Еще одно замечание ... На самом деле у нас есть два новых прод-сервера, которые идентичны. Одно из других наших приложений использует балансировку нагрузки на обоих серверах. Рассматриваемое здесь приложение находится только на одном из серверов и не балансируется по нагрузке. Может ли это иметь какое-то отношение к этому ...?

Надеюсь, ты сможешь помочь!

В итоге наши айтишники решили проблему.

Хотя они не совсем понимали, в чем была настоящая проблема, они думали, что это произошло из-за того, что с нашим доменным именем было связано два IP-адреса (для балансировки нагрузки). После настройки и запуска Round Robin (VMWare) проблема, похоже, исчезла сама собой.