Каковы плюсы и минусы работы IIS как 32-битного или 64-битного на 64-битной ОС?

Возможно, лучше подходит для "переполнения стойки", но с точки зрения разработчика, каковы преимущества и недостатки запуска IIS (обслуживающего как классический ASP и .NET), так и 32-разрядный процесс вместо 64-битного процесса на 64-битный Windows-хост?

Основным преимуществом 32/64 (iis/server) по сравнению с 32/32, по-видимому, является способность до 4 ГБ в памяти для каждого процесса IIS.

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

Есть ли преимущества в производительности 64/64 по сравнению с 32/64 или что-то еще, что теперь потребует полного переключения? Я сделал какие-либо ложные предположения здесь?

Ответ 1

Единственным преимуществом для запуска IIS на 32-битной 32-разрядной версии vevrsus является разрешение доступа к гораздо большему адресу адресного пространства.

Если вы делаете обычную обработку страниц ASPX, то, вероятно, вам не нужно обращаться с более чем 4 ГБ из какого-либо одного процесса. Предположим, вы работаете в 32-битном режиме с веб-садом с несколькими рабочими процессами на одном компьютере. В этом случае каждый процесс может обрабатывать до 4 ГБ.

Большое преимущество может приходить при выполнении кэширования. 64-разрядный процесс может поддерживать огромный кеш в памяти (при условии, что у вас есть 32 ГБ или более ОЗУ для его поддержки), чтобы вы могли кэшировать сложный контент или данные страницы на веб-сервере. Это позволяет получить первичную прибыль, когда данные дороже сгенерировать, чем извлекать, например, если данные являются разработанной формой (скажем, результатом моделирования monte carlo) или если данные хранятся вне коробки и сети Время ввода-вывода намного дороже, чем время поиска кэша.

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

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


Может быть, полезная аналогия: на транспорте большой внедорожник похож на 64-битную машину, а обычный компактный легковой автомобиль похож на 32-битный сервер. Вы можете носить с собой гораздо больше вещей на большом внедорожнике, и он имеет большую буксировочную способность, вмещает до 8 человек, и GVWR 8600 фунтов. Но при всем этом вы платите. Грузовик тяжелее. Он использует больше топлива. Если вы только занимаетесь перевозкой около 2 человек и одной вещевой сумкой, вам не нужен внедорожник. Вам будет лучше с меньшим транспортным средством. Он может быть более быстрым и эффективным.

Ответ 2

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

Единственное преимущество - проблема DLL, о которой вы говорили. Это может быть причиной для обновления (если у вас есть что-то конкретное 64-битное, которое вам нужно использовать).

Ответ 3

У меня был опыт, когда перемещение с 32-битного Windows 2003 Server на 64-битный Windows 2003 Server, работающий под управлением IIS 6, и производительность веб-сайта ASP.NET 3.5 были неприемлемы.

64-битный сервер будет работать на 2 секунды за 32-битной последовательностью.

После переключения IIS 6 для работы в 32-разрядном рабочем процессе производительность была одинаковой и сопоставимой еще раз.

Я не проверял его, но я думаю, что это может относиться только к IIS6 win2k3, так как тестирование, которое я делал с IIS7 x64 (Vista) и 64-разрядный рабочий процесс IIS, кажется, выполняется отлично.

Процесс перехода на 32-битный процесс был довольно прост. Вот статья в КБ со вспомогательными данными: http://support.microsoft.com/kb/894435/en-us

ASP.NET 2.0, 32-разрядная версия Чтобы запустить 32-разрядную версию ASP.NET 2.0, выполните следующие действия:

  • Нажмите "Пуск", выберите "Выполнить", введите cmd и нажмите "ОК".
  • Введите следующую команду для включения 32-разрядного режима: cscript% SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
  • Введите следующую команду для установки версии ASP.NET 2.0 (32-разрядной версии) и установки карт script в корневом каталоге IIS и в разделе: % SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
  • Убедитесь, что для статуса ASP.NET версии 2.0.50727 (32-разрядная версия) установлено значение Разрешено в списке расширения веб-службы в диспетчере служб Интернета.

См. статью KB для возврата к 64-разрядной версии.

Ответ 4

Для доступности памяти см. этот msdn blog.

Доступность памяти. Для моего приложения мы получили то, что нам нужно, переключение с 32-битного процесса на 32-разрядную ОС на 32-битный процесс на 64-разрядную ОС без проблем с заменой сторонних библиотек. Итак, мы остановились. Преимущества: 1) эффективная память 2-3x для каждого рабочего процесса IIS и 2) в 32-битной ОС, где веб-сайт использует много памяти, другие системные процессы и веб-сайты конкурируют за ограниченную общую память. Для вашего приложения посмотрите, сколько памяти использует ваш рабочий процесс. Если каждый WP не использует много памяти (более 1 ГБ), 64-разрядные рабочие процессы не помогут.

Для производительности я думаю, что вам нужно протестировать свои собственные приложения в обеих конфигурациях. Сообщение Dave выше показывает, что у вас может быть ухудшение производительности с 64 бит. Как примечания cheeso, некоторые приложения могут видеть преимущества кэширования (2GB + кеша много). За исключением ограниченных и простых приложений, я не думаю, что мы сможем сделать обобщения производительности. Мы могли бы указать на конкретные технологии, которые работают лучше или хуже.

Ответ 5

Помимо очевидных различий в памяти, 32-разрядные процессы в 64-разрядной ОС должны запускаться в режиме "Windows в Windows" или WOW. Это в основном слой thunking/emulation. Если вы уделяете достаточно пристальное внимание, есть штраф за исполнение.