Снижение производительности ASP.NET между 32-битным / 64-битным сервером

9

В настоящее время мы выполняем модернизацию нашего 32-битного производственного сервера до более мощного 64-битного сервера, в то время как выполняется обновление до ASP.NET 4. Однако после небольшого тестирования нагрузки у нас, похоже, наблюдается снижение производительности!

Я создал простой нагрузочный тест с постоянной нагрузкой 20 пользователей, выполнив несколько простых вариантов использования, и сравнил результаты:

Ответы на страницы

Как вы можете видеть, самая эффективная конфигурация - это существующий 32-битный сервер с ASP.NET 2.0.

Вы можете видеть, что при запуске IIS в 32-битном режиме на 64-битной машине это вполне сопоставимо с существующим 32-битным сервером, но при запуске IIS в 64-битном режиме на 64-битном сервере производительность значительно ниже. Я не уверен, почему это так, учитывая, что новый сервер лучше.

По какой-то причине каждый раз, когда я запускаю тест с IIS в 64-битной среде, в начале появляется большой скачок, затем он выравнивается, но время отклика все же выше, чем у 32-битной. Пик исчезает, когда я запускаю IIS в 32-битном режиме.

64-битный шип

Обратите внимание, что пул приложений / приложение не перезапускается между тестами, но пик постоянно присутствует, а ответ выше, чем в других конфигурациях.

Итак, мой вопрос: кто-нибудь знает, почему это так? Есть ли какие-либо настройки конфигурации, которые мне нужно установить? У кого-нибудь есть указания на то, как я могу сузить, что вызывает разницу?

Текущий производственный сервер: Win Server 2003 - 32bit - IIS6

Новый сервер: Win Server 2003 R2 - 64bit - IIS6

DavidMasters84
источник

Ответы:

4

Согласно документации MS рекомендует запускать 32-битные пулы приложений на 64-битном сервере, так как веб-приложение не должно использовать больше памяти (внутренне).

32-битные приложения всегда более производительны - меньшие указатели означают меньше памяти, необходимой для определенного набора инструкций, что означает лучшие коэффициенты попадания в кэш.

64-битные процессы имеют только ограниченный смысл - когда процессу действительно требуется больше памяти. если вы продолжаете делать веб-интерфейс именно так (внешний интерфейс), то нет никаких причин, по которым ему когда-либо требовалось бы столько памяти;)

Кроме того, имеет смысл перейти на более производительные версии. IIS6 затянул большую производительность - IIS 7.5 намного лучше, ОСОБЕННО, если вы запускаете ASP.NET / управляемый код.

TomTom
источник
Интересно, спасибо. Я не думаю, что у вас есть ссылка на документ MS с рекомендацией, чтобы я мог продолжить чтение? К сожалению, я не могу использовать II7 +, потому что я связан с Win2k3 :(
DavidMasters84
IIS.net - руководство по хостингу;) Для iis 7,)
TomTom
«Поскольку веб-приложение в любом случае не должно использовать больше памяти» звучит как то, что Билл Гейтс сказал в 80-х годах :) У вас есть ссылка на руководство?
Фредрик Йоханссон
2

Мы попробовали это на нашем сервере Windows 2K3 и получили то же самое, я не был здесь в то время, но это как-то связано с тем, как MS реализовала 64Bit .Net в 2K3 (не уверен, что, но человек, который сказал мне, является MVP, так Я приму его слово на этом.)

И просто, чтобы вы знали, что если вы перейдете на Win2K8, вы можете увидеть то же самое, что и я, с нашими серверами здесь и получить ту же проблему с производительностью. Из того, что мне сказали, и немного чтения, чтобы воспользоваться преимуществами 64Bit .Net, рекомендуется использовать интегрированные конвейеры ( http://msdn.microsoft.com/en-us/magazine/cc135973.aspx ).

Извините, это не отвечает на ваш вопрос, но я подумал, что дам вам знать, что вы не единственный, кто видит эту проблему.

enterzero
источник