Работа с пулами приложений в Internet Information Server

Опубликовано: 25 Марта, 2023

22 апреля 2003 г. я организовал живую дискуссию на своем веб-сайте, связанную с архивированием электронной почты. На полпути к чату мой экран погас, и я получил сообщение об ошибке превышения лимита пропускной способности. Поскольку я сам разработал программное обеспечение для чата, я знал, что сообщение об ошибке не является частью программного обеспечения. Это должно было быть связано с ограничением, которое наложил мой веб-хост. Что еще хуже, все, кто участвовал в чате, были удалены с сайта, и большинство из них не смогли повторно подключиться, потому что сайт думал, что они все еще вошли в систему. Поскольку я был организатором мероприятия на своем веб-сайте, это Я разработал себя, проблема была немного неловко, если не сказать больше.


Как только мне удалось восстановить соединение и завершить чат, я отчаянно позвонил своему веб-хосту, чтобы узнать, что произошло. Веб-хост был очень удивлен этим событием и сказал мне, что они не делают ничего, чтобы ограничить мою пропускную способность. Короче говоря, я отправил моему веб-хосту снимок экрана с сообщением об ошибке, и они исследовали проблему. Выяснилось, что кто-то еще, кто размещал у них веб-сайт, установил условно-бесплатную программу мониторинга пропускной способности как часть своего веб-сайта. Несмотря на то, что это приложение не было частью моего веб-сайта, оно могло привести к сбою моего сайта из-за того, что Internet Information Server разделяет ресурсы между размещенными веб-сайтами.


Я разместил стенограмму чата на своем веб-сайте. Если вы зайдете на http://www.brienposey.com/kb/navistore-chat-2.asp и прокрутите страницу примерно до двух третей вниз, вы увидите, где произошел сбой и где все пытались восстановить соединение.. Я даю вам эту ссылку, чтобы доказать свою точку зрения. Дело в том, что я не выдумывал эту историю. Если на сервере IIS размещено несколько веб-сайтов, проблема на одном сайте может вызвать проблемы на других сайтах. Это случилось со мной, и это может случиться с вами; если вы не используете пулы приложений для изоляции вашего сайта.


Что такое пул приложений


Пул приложений позволяет изолировать веб-сайты друг от друга, даже если они размещены на общем сервере. Каждому пулу приложений предоставляется собственный набор серверных ресурсов. Таким образом, сбой веб-сайта не повлияет на сайты в других пулах приложений. Классическим примером этого является веб-сайт с утечкой памяти. Если все веб-сайты, размещенные на определенном сервере, будут совместно использовать системные ресурсы, а на одном из веб-сайтов произойдет утечка памяти, это потенциально может отнять память у других размещенных сайтов. Однако, если бы сайт с утечкой находился в собственном пуле приложений, утечка памяти не повлияла бы ни на один другой сайт, поскольку каждый пул приложений имеет свои собственные серверные ресурсы (включая память).


Прежде чем я начну


Прежде чем я начну показывать вам, как настроить пулы приложений, есть несколько вещей, которые вам нужно знать о них. Во-первых, пулы приложений доступны только тогда, когда служба HTTP работает в режиме изоляции рабочего процесса (по умолчанию). Если вы используете IIS в режиме изоляции IIS 5, пулы приложений не будут вам доступны.


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


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


Создание нового пула приложений


Теперь, когда я объяснил, что такое пулы приложений, давайте посмотрим, как их создать. Если вы хотите создать пул приложений, все, что вам нужно сделать, это открыть диспетчер информационных служб Интернета (IIS), щелкнуть правой кнопкой мыши контейнер «Пулы приложений» и выбрать «Создать | Команды пула приложений из контекстного меню. Когда вы это сделаете, вы увидите диалоговое окно, в котором вас попросят дать IIS имя для нового пула приложений. Я обычно даю пулу приложений имя, отражающее, с каким веб-сайтом он будет использоваться. Убедитесь, что выбран параметр «Использовать параметры по умолчанию», нажмите «ОК», и пул приложений будет создан.


Тот факт, что вы создаете пул приложений, не означает, что какой-либо из ваших веб-сайтов будет его использовать. Чтобы веб-сайт использовал определенный пул приложений, необходимо щелкнуть правой кнопкой мыши веб-сайт и выбрать команду «Свойства» в контекстном меню, чтобы открыть лист свойств веб-сайта. Когда появится страница свойств, выберите вкладку Домашний каталог. Внизу этой вкладки есть опция, позволяющая выбрать, какой пул приложений будет использовать сайт.


Настройка пула приложений


Обычно вам больше ничего не нужно делать с пулом приложений. Однако существует довольно много способов тонкой настройки поведения пула приложений, если хотите. Для этого щелкните правой кнопкой мыши пул приложений и выберите команду «Свойства» в появившемся контекстном меню. Когда вы это сделаете, вы увидите лист свойств пула приложений, как показано на рисунке A.



Изображение 20916
Рисунок A. Вы можете точно настроить поведение пула приложений


Как вы можете видеть на рисунке, вкладка по умолчанию — это вкладка «Переработка». Переработка просто означает перезапуск рабочего процесса. Точно так же, как компьютер иногда работает лучше после перезагрузки, рабочие процессы также необходимо время от времени «перезагружать», чтобы поддерживать их нормальную работу.


По умолчанию IIS перезапускает рабочий процесс каждые 1740 минут (29 часов). Однако существует также возможность перезапускать рабочий процесс после определенного количества запросов (это хорошо для загруженных веб-сайтов) или в определенное время дня.


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


Вкладка «Производительность»


Вкладка «Производительность», показанная на рис. B, предназначена для обеспечения эффективной работы пула приложений. Первая опция на странице закрывает рабочий процесс после того, как сайт бездействует в течение 20 минут. Это помогает предоставить серверу вычислительную мощность и ресурсы памяти, которые он может использовать для других целей, пока рабочий процесс снова не понадобится.



Изображение 20917
Рисунок B. Вкладка «Производительность» предназначена для обеспечения эффективной работы пула приложений.


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


Следующая часть вкладки «Производительность» связана с мониторингом ЦП. Мониторинг ЦП позволяет предотвратить перегрузку ресурсов ЦП сервера ресурсоемким веб-приложением. Вы можете установить максимальный процент процессорного времени, который разрешено использовать рабочему процессу. Если это значение превышено, рабочий процесс можно перезапустить.


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


Здоровье


Вкладка Health, показанная на рис. C, позволяет убедиться, что рабочие процессы, используемые пулом приложений, работоспособны. Первый параметр на этой вкладке — флажок «Включить проверку связи». Если вы выберете эту опцию, IIS будет проверять рабочие процессы пула каждые 30 секунд, чтобы убедиться, что они отвечают.



Изображение 20918
Рисунок C. Вкладка «Здоровье» позволяет IIS отслеживать рабочие процессы, чтобы убедиться, что они работоспособны и отвечают на запросы.


Следующим флажком на вкладке «Здоровье» является флажок «Включить быструю защиту от сбоев». Идея заключается в том, что IIS может полностью отключить пул приложений, если за определенный период времени произойдет определенное количество сбоев. Например, по умолчанию, если рабочий процесс дает сбой пять раз за пять минут, пул приложений будет отключен. Причина для этого заключается в том, что если рабочий процесс часто дает сбой, то должен быть серьезный сбой либо в системе, либо на одном из веб-сайтов в пуле приложений. IIS отключает пул приложений в интересах сохранения общей стабильности сервера.


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


Личность


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



Изображение 20919
Рисунок D. Вкладка «Идентификация» позволяет выбрать учетные данные служебной учетной записи, которые будет использовать пул приложений.


Вывод


В этой статье я объяснил, что проблема с одним веб-сайтом может повлиять на другие веб-сайты, размещенные на сервере. Однако вы можете предотвратить эти проблемы, поместив каждый размещенный веб-сайт в отдельный пул приложений.