Каковы преимущества и недостатки использования IIS как 32-разрядного по сравнению с 64-разрядным в 64-разрядной ОС? - PullRequest
37 голосов
/ 03 февраля 2009

Возможно, лучше подходит для «переполнения стоек», но с точки зрения разработчика, каковы преимущества и недостатки использования 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 или что-нибудь еще, что потребовало бы полного переключения сейчас? Я сделал здесь какие-нибудь ложные предположения?

Ответы [ 5 ]

35 голосов
/ 14 января 2010

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

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

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

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

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


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

4 голосов
/ 03 февраля 2009

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

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

3 голосов
/ 14 июля 2009

У меня был опыт, когда переход с 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, выполните следующие действия:

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

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

0 голосов
/ 14 января 2010

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

0 голосов
/ 14 января 2010

Информация о доступности памяти приведена в этом блоге msdn .

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

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

...