Архитектура серверов с управлением по процессам

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

Web-сервер с управлением по процессам обычно имеет один главный процесс, который прослушивает иовые клиентские соединения. Для каждого нового соеди- пепия главный процесс создает отдельный процесс для обслуживания соединения. После синтаксического анализа клиентского запроса и передачи ответа процесс завершается. Завершение процесса после обработки запроса защищает систему от определенных разновидностей ошибок программирования. Процесс, который не освобождает ресурсы памяти, может постепенно захватывать все больше памяти. Это называется утечкой памяти. При завершении процесса операциоипая система автоматически освобождает ресурсы, выделенные процессу. Простота такого подхода дает возможность разработчикам сосредоточиться на базовой составляющей серверного программного обеспечения (синтаксический Анализ запросов и создапие ответов). Большинство первых Web-серверов следовали этой модели, в том числе серверы CERN и NCSA [KMR95].

Затраты на создание и завершение процесса составляют значительную часть работы при обработке HTTP-запроса для небольшого статического ресурса. Для снижения этих затрат при запуске сервера могут быть созданы несколько процессов. После создания процесс обслуживает запросы один за другим. При установлении нового соединения главный процесс предоставляет существующий, неактивный процесс для обработки запроса, а не создает новый процесс. Помимо спижепия нагрузки на сервер, использование существующего процесса сокращает время ожидания пользователем. Однако подобный подход чувствителен к ошибкам программирования, ведущим к утечкам памяти. Даже если программное обеспечение Web- сервера свободно от таких ошибок, многие Web-сайты используют библиотеки или сценарии, паиисапные сторонними программистами. Такое программное обеспечение может вызвать утечки памяти. Для решения подобных проблем сервер может завершать процесс после обработки определенного числа запросов. В качестве альтернативы Web-сервер может воспользоваться одним из усовершенствованных методов управления памятью, которые ограничивают объем оперативной иамяги, выделяемый каждому процессу. Подробнее об этом будет говориться при рассмотрении Web-сервера Apache в разделе 4.6.1.

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

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100