Медленное первое обращение к веб-службе ASMX после обновления до Windows Server 2008, IIS 7.5
Недавно у нас был новый рабочий сервер, созданный для обслуживания бизнес-приложений ASP.NET 4.0. Спецификации для нового сервера: Windows Server 2008 R2, 2-ядерный ксенон, 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)
- Управляемый трубопровод = Интегрированный
- Идентичность = NetworkService
- Работа в 64-битном режиме (переход на 32-битный режим не дал эффекта)
Сначала я подумал, что это проблема утилизации, так как я видел много сообщений, касающихся этого. Тем не менее, это не объясняет, почему поведение "первого удара" происходит после ожидания всего 2-3 минут.
Единственное, что я не пробовал, это разминка IIS. Это связано с тем, что: а) у меня нет прав на его установку и б) в моем представлении "первое попадание" относится к реальной странице входа, а не к службе (если я не ошибаюсь). Страница входа загружается менее чем за 300 мс, независимо от того, является ли она "первым нажатием" или нет.
Еще одно замечание... На самом деле у нас есть два новых сервера, которые идентичны. Одно из наших других приложений использует балансировку нагрузки на обоих серверах. Рассматриваемое приложение расположено только на одном из серверов и не сбалансировано по нагрузке. Может ли это быть как-то связано с этим..?
Надеюсь, вы можете помочь!
1 ответ
Таким образом, наши ИТ-специалисты решили проблему.
Хотя они не были точно уверены, в чем именно заключалась проблема, они думают, что это произошло потому, что с нашим доменным именем было связано два IP-адреса (для распределения нагрузки). После настройки и запуска Round Robin (VMWare) проблема, похоже, решилась сама собой.