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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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