IIS 5.0 повышает производительность
 

Ключевое свойство Microsoft IIS 5.0 - высокая производительность. Для повышения уровня производительности IIS разработчики Microsoft усовершенствовали многие компоненты IIS, например Active Server Pages (ASP). Для максимально быстрого подключения IIS необходимо внести некоторые изменения в конфигурацию IIS и настройки системы Windows 2000.

Механизм ASP в IIS 5.0 работает значительно быстрее, чем в IIS 4.0. Тестирование в компании Microsoft показало - приложения, построенные с использованием только ASP, в IIS 5.0 выполнялись чуть ли не вдвое быстрее, чем они это могли в IIS 4.0. Такое повышение скорости системы способствует тому, что ASP- приложение, запущенное на IIS 5.0, может поддерживать в два раза больше пользователей и в тоже время иметь такую же производительность, как если бы оно запускалось на IIS 4.0. При работе с IIS 5.0 производительность системы будет изменяться в зависимости от ее конфигурации (количества процессоров, размера памяти, конфигурации сети).

Значительное повышение производительности IIS 5.0 обусловлено свойствами системы Windows 2000, использующей многопроцессорную конфигурацию. Приложения, работающие на многопроцессорных системах Windows 2000, функционируют намного быстрее, чем приложения, запущенные на многопроцессорных системах Windows NT. Эффективная работа нескольких процессоров повышает производительность ASP. Тестирование производительности приложений (с помощью таких программ, как Vertigo Software`s Fitch & Mather Stocks 2000 – FMStocks 2000) показывает, что по производительности система Windows 2000 превосходит Windows NT 4.0. Так как IIS 5.0 запускается поверх Windows 2000, повышение эффективности работы системы Windows 2000 как сервера приложений оказывает влияние на быстродействие IIS 5.0.

Дополнительные характеристики, такие как Application Protection в IIS 5.0, управление компонентами и работа с общими файлами в Windows 2000, также влияют на производительность IIS 5.0. Давайте рассмотрим эти возможности и некоторые специальные настройки IIS 5.0 с точки зрения предстоящего увеличения производительности.

Application Protection

Функция Application Protection в IIS 5.0 дает возможность запускать приложения в изолированных областях памяти. Это позволяет увеличить стабильность системы, при выполнении обработки приложений вне IIS.

Существует три режима защиты приложений Application Protection в IIS 5.0 - Low (IIS Process), Medium (Pooled) и High (Isolated). Можно изменить настройку Application Protection на закладке Home Directory страницы Properties для сайта, как показано на Рис.1, или на странице Virtual Directory Properties (чтобы добраться до обеих страниц Properties, откройте Internet Services Manager (ISM), нажмите правую кнопку мыши на Web-сайте или Virtual Directory, который хотите изменить, а затем выберите Properties). Приложение ASP в режме защиты Low (IIS Process) работает в том же пространстве процесса (т.е. inetinfo.exe), что и сам IIS. Если происходит отказ приложения и нарушение доступа к памяти у IIS или серьезный сбой другого важного серверного процесса, то IIS и все другие Web-приложения тоже могут завершиться аварийно.



Рис.1. Выбор Application Protection в IIS 5.0

При использовании режима Medium (Pooled) Application Protection приложение запускается со всеми другими связанными с ним приложениями в процессе dllhost.exe. Как и при режиме защиты Low (IIS Process), если одно из приложений, использующее способ защиты Medium (Pooled) выходит из строя, это может послужить причиной сбоя всех приложений, запущенных в той же рабочей области.

Настройка защиты High (Isolated) в IIS 5.0 подобна настройке Run in separate memory space в IIS 4.0. При использовании этой настройки для ASP-приложения в IIS 4.0 оно помещается в отдельный пакет Microsoft Transaction Server (MTS). Передача приложения к MTS увеличивает стабильность, отделяя работу приложения от IIS, но в то же время значительно снижая производительность приложения. Это связано с тем, что внепроцессное исполнение пакета MTS приводит к непроизводительным издержкам.

Настройка Application Protection в IIS 5.0 выполняется не так, как настройка защиты в IIS 4.0. При выборе ASP-приложения для работы в режиме High (Isolated) в IIS 5.0 ISM создает новое COM+ приложение и помещает в него ASP (в Component Services Explorer название нового приложения будет выглядеть как IIS–{Default Web Site//Root/DNATestProject1KLS}, заключительная часть имени – DNATestProject1KLS является именем приложения). Каждое высокозащищенное приложение запускается в отдельной копии dllhost.exe, и если происходит сбой приложения, это не станет причиной остановки для других приложений.

Приложения, запускаемые в Medium (Pooled) или High (Isolated) режимах защиты в IIS 5.0, показывают значительное повышение производительности по сравнению с идентичным приложением, выполняемым в IIS 4.0, согласно статье "Leveraging ASP in IIS 5.0" в Microsoft Developer Network (MSDN). Автор статьи обращает внимание на то, что использование установки защиты Medium (Pooled) в IIS 5.0 обычно дает более высокую производительность, чем внутрипроцессные приложения в IIS 4.0. Этот способ, связанный с установкой защиты Medium (Pooled) в IIS 5.0, перемещает приложение в более изолированную среду и, кроме того, увеличивает производительность. Даже при установке защиты High (Isolated) приложение будет выполняться быстрее, чем если бы оно было запущено в IIS 4.0.

Компоненты

Управление компонентами в IIS 5.0 также повышает производительность по сравнению с IIS 4.0. Всем разработчикам для IIS 5.0 при работе с компонентами необходимо помнить о предоставлении механизму ASP права отпускать объект в тот момент, когда приложение в нем больше не нуждается. Освобождение ненужных объектов освобождает ценные ресурсы.

IIS 4.0 не освобождает объекты до тех пор, пока страницу со ссылкой на объект не перестанут использовать. Для страниц, обрабатываемых длительное время, задержка освобождения объекта может добавить значительные непроизводительные издержки в работе приложения. Низкая производительность является результатом того, что выполнение страницы не завершается до тех пор, пока все объекты не обработаны, а код ASP не выполнен до конца.

Выигрыш в производительности обеспечивается за счет быстрого освобождения ненужных объектов, и это особенно заметно, когда многие пользователи обращаются к приложению одновременно. Когда это происходит в IIS 4.0, каждая страница привязывает объект и держит его в памяти до тех пор, пока страница заполняется, используя в это время дополнительные ресурсы и таким образом снижая производительность.

Для освобождения объекта можно использовать код VBScript. Например,

Set oCust = Nothing 

присвоит переменной oCust, которая содержит ссылку на объект, ключевое слово Nothing, удаляющее ссылку. Этот код заставляет механизм ASP немедленно освободить объект, на который указывает oCust.

Дополнительные настройки

Метабаза IIS 5.0 содержит параметр ASPProcessorThreadMax, который в IIS 4.0 назывался ProcessorThreadMax и находился в реестре. Разработчики Microsoft изменили значение по умолчанию для этого параметра с 10 в IIS 4.0 на 25 в IIS 5.0. Это изменение может повысить производительность, поскольку процесс ASP будет обрабатываться большим количеством потоков. Если система имеет достаточно процессоров и скорости их работы хватает для использования большего числа потоков, новая настройка позволит сделать процесс ASP более эффективным. При использовании IIS 5.0 эту настройку указывать не нужно, пока тестирование системы не покажет, что настройка по умолчанию является узким местом.

Если на сервере установлена служба Indexing Service, то можно повысить производительность, используя ISM для отключения параметра Index this resource. Если приложение создает HTML-файл из базы данных или другого источника, и не используются статические HTML-файлы, которые пользователям необходимо будет найти, то в этом случае параметр Index this resource можно отключить, так как службе Indexing Service индексирование таких файлов, скорее всего, не потребуется. Отключение этого параметра сокращает непроизводительные издержки сервера при выполнении ASP-приложения, что может несколько повысить производительность.

Можно использовать закладку Performance страницы Properties для настройки памяти, которая применяется в IIS 5.0 для обработки подключений и ресурсов Web-сайта. В документации по IIS говорится о необходимости установки ползунка Performance Tuning немного выше того количества ответов в день, которые ожидается получать на сайте. Можно изменить настройку «ответов в день», перемещая ползунок в соответствии с количеством ответов (т.е. менее чем 10 000, менее чем 100 000, более чем 100 000). При перемещении ползунка к большему числу задействуется больший объем доступной памяти для обработки ресурсов Web-сайта.

Параметр Enable process throttling – новый на закладке Performance в IIS 5.0, позволяет IIS ограничивать время процессора, которое механизм ASP расходует на выполнение приложений с установленным режимом защиты High (Isolated). Когда включается этот параметр, приложения с высоким уровнем защиты по умолчанию могут использовать не более 10 % времени работы процессора в течение 24 часов. Если приложение превышает этот предел, IIS записывает сообщение в журнал регистрации событий. Можно активизировать Enforce limits, чтобы заставить IIS выбрать более решительное действие, например, остановку всех внепроцессных приложений, если приложение превысит предел. Если планируется ускорить выполнение процесса, следует предварительно почитать документацию по IIS.

Защитные функции вступают в компромисс с производительностью IIS 5.0. Активизация настроек защиты в IIS или Windows 2000 включает функции, которые, должны контролировать или выполнять какие-либо процессы. Защита добавляет уровень непроизводительных издержек в каждую задачу, оказывая на нее воздействие. Если другой защиты доступа, кроме анонимного, не нужно, то другие типы защиты (например, Secure Sockets Layer (SSL)) включать не требуется.

Защита существует во многих местах. Windows 2000, IIS, COM+ и SSL имеют настройки, которые могут воздействовать на систему, делая ее более или менее защищенной. Необходимо понять, насколько мощная защита требуется системе, и как уровень защиты будет влиять на ее производительность. Например, совместное тестирование в лаборатории, где я работал, показало, что отдельное приложение, использующее Visual Basic (VB) и ASP, могло обслуживать 250 страниц в секунду. Изменение только одной настройки защиты в COM+ увеличивало производительность на 950-1000 страниц в секунду.

Доступ к общим файлам

Можно использовать режим File Sharing системы Windows 2000 для повышения производительности IIS 5.0, изменяя настройку File Sharing для сетевого адаптера, который обрабатывает входящие HTTP-запросы. Для этого нужно нажать Start, Settings, Network и Dialup Connections и перейти к окну, которое показано на Рис.2. Затем нажмите правую кнопку мыши на том подключении, которое хотите изменить, и выберите Properties. На закладке Server Optimization следует выбрать Maximize data throughput for network applications и нажать OK. Эта настройка оптимизирует использование памяти системой Windows 2000 применительно к сетевым приложениям, которые выполняют кэширование, таким как Microsoft SQL Server и IIS. Эта настройка также предохраняет Windows 2000 от выгрузки рабочих данных IIS, перенося их из памяти на диск при снижении объема доступной памяти системы. Предотвращение такой выгрузки может резко поднять производительность. На сервере, который имеет несколько адаптеров (т.е. многодомном сервере), можно установить настройки File Sharing для каждого используемого подключения.



Рис.2. Окно диалога File Sharing

Аппаратный фактор

Аппаратное обеспечение сильно влияет на производительность IIS 5.0. Группа разработчиков лаборатории компании Microsoft тестировала различные аппаратные платформы для Web-серверов IIS. Разработчики сравнили производительность IIS на мощных серверах с оперативной памятью 512 Мбайт, быстродействующими дисками и несколькими процессорами с производительностью IIS на серверах с меньшим объемом оперативной памяти (128 Мбайт), стандартными IDE-дисками и несколькими процессорами. Лучшими Web-серверами были признаны те, которые имели несколько быстрых CPU. Ни размер памяти, ни тип интерфейса диска (например, SCSI, IDE), ни скорость процессора не оказывала значительного влияния на производительность IIS. Результаты тестирования показали, что можно добиться заметного роста производительности, увеличивая количество процессоров. Если использовать Network Load Balancing (NLB) или аппаратное решение (например, маршрутизатор, который обеспечивает циклическое переключение к DNS), можно повысить производительность, добавляя большее количество компьютеров.

Лабораторные тесты и практический опыт внедрения IIS 5.0 на системе Windows 2000 показывает, что использование настроек по умолчанию и внесение выборочных изменений только в определенные параметры будет способствовать повышению производительности. Не изменяйте настройки по умолчанию для сетевого интерфейса системы до тех пор, пока не протестируете производительность системы и не сможете точно оценить, как отразится на ней каждое изменение.

 
Автор: Кен Спенсер
 
Оригинал статьи: http://www.woweb.ru/publ/60-1-0-212