Почему IIS медленнее, чем сервер разработки ASP.NET?

У меня есть веб-страница ASPX, которая делает некоторые сложные операции и вызовы базы данных. Когда я просматриваю веб-страницу с помощью ASP.NET Development Server (Cassini), это занимает около 200 мс.

Затем, без каких-либо изменений кода и конфигурации, я развертываю веб-сайт на своем локальном компьютере IIS 7 и снова просматриваю ту же веб-страницу. Это займет 2,0 секунды, что в 10 раз медленнее.

Я думал, что IIS должен быть быстрее (или, по крайней мере, так же быстро, как) Кассини.

Для дальнейшего изучения я создал новую страницу test1.aspx, которая не содержит ничего, кроме пустого цикла for, который выполняется 90 миллионов раз в Page_Load. В Кассини это занимает около 200 мс. В IIS это занимает 300 мс (на 50% медленнее).

Что может быть причиной того, что IIS делает медленнее, чем Кассини? Или, возможно, еще лучший вопрос, как я могу заставить IIS работать по крайней мере так же быстро, как Cassini?

1 ответ

Решение

Быстрый и короткий ответ:

Настройте пул приложений, используемый веб-приложением для включения 32-разрядных приложений:

Установите для параметра Включить 32-разрядные приложения значение Истина

Подробное прохождение:

Я использовал некоторые инструменты профилирования производительности (некоторые из них бесплатны) для сравнения производительности и выявления узких мест. Бесплатный EQATEC Profiler достаточно хорош, чтобы позволить мне сравнить два отчета, сгенерированных при запуске Cassini и IIS, и определить метод, вызывающий проблему. Однако метод содержит слишком много строк, и я не смог точно определить точную строку, вызвавшую проблему.

Тогда Redgate ANTS пригодится. Профилировав метод с деталями на уровне строк, я обнаружил, что RegEx работает очень медленно.

Дальнейший поиск приводит меня к ответу: RegEx.Match намного медленнее в IIS по сравнению с сервером разработки (Cassini). Я использую 64-битную Windows 7 с IIS 7. Установка "Включить 32-битные приложения" в True решает проблему.


Кроме того, немного похожее чтение при работе IIS как 32-битной или 64-битной:

64-разрядные серверы гораздо более эффективны при использовании для баз данных, таких как SQL Server или других серверов управления данными (скажем, корпоративный почтовый сервер, например Exchange), чем для серверов обработки, таких как IIS или рабочие процессы, которыми он управляет.

Для каждого поиска потребуются 64-битные указатели, что сделает все немного медленнее.

Источник: Каковы преимущества и недостатки использования IIS как 32-разрядного по сравнению с 64-разрядным в 64-разрядной ОС?

Другие вопросы по тегам