30.13. Резюме

30.13. Резюме

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

0. Последовательный сервер (точка отсчета — управление процессом отсутствует).

1. Параллельный сервер, по одному вызову функции fork для каждого клиента.

2. Предварительное порождение дочерних процессов, каждый из которых вызывает функцию accept.

3. Предварительное порождение дочерних процессов с блокировкой файла для защиты функции accept.

4. Предварительное порождение дочерних процессов с блокировкой взаимного исключения дочерними процессами для защиты функции accept.

5. Предварительное порождение дочерних процессов с передачей дескриптора от родительского процесса дочернему.

6. Параллельный сервер, поочередное создание потоков по мере поступления клиентских запросов.

7. Предварительное порождение потоков с блокировкой взаимного исключения потоками для защиты функции accept.

8. Предварительное порождение потоков, основной поток вызывает функцию accept.

Резюмируя материал этой главы, можно сделать несколько комментариев.

? Если сервер не слишком загружен, хорошо работает традиционная модель параллельного сервера, в которой при поступлении очередного клиентского запроса вызывается функция fork для создания нового дочернего процесса. Этот вариант допускает комбинирование с демоном inetd, принимающим все клиентские запросы. Остальные версии применимы в случае загруженных серверов, таких как веб-серверы.

? Создание пула дочерних процессов или потоков сокращает временные затраты центрального процессора по сравнению с традиционной моделью (один вызов функции fork для каждого запроса) в 10 и более раз. При этом не слишком усложняется код, но становится необходимо (как говорилось при обсуждении примеров) отслеживать количество свободных дочерних процессов и корректировать его по мере необходимости, так как количество клиентских запросов, которые требуется обслужить, динамически изменяется.

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

? Как правило, версия, в которой каждый поток или дочерний процесс вызывает функцию accept, проще и быстрее, чем версия, где вызов функции accept осуществляется только основным потоком (или родительским процессом), впоследствии передающим дескриптор присоединенного сокета другому потоку или дочернему процессу.

? Блокировка всех дочерних процессов или программных потоков в вызове функции accept предпочтительнее, чем блокировка в вызове функции select, что объясняется возможностью появления коллизий при вызове функции select.

? Использование потоков, как правило, дает больший выигрыш во времени, чем использование процессов. Но выбор между версиями 1 и 6 (один дочерний процесс на каждый запрос и один поток на каждый запрос) зависит от свойств операционной системы и от того, какие еще программы задействованы в обслуживании клиентских запросов. Например, если сервер, принимающий клиентское соединение, вызывает функции fork и exec, то может оказаться быстрее породить с помощью функции fork процесс с одним потоком, чем процесс с несколькими потоками.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Резюме

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

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


Резюме

Из книги Nero 8 автора Кашеваров А

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


Резюме

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

Резюме Эта глава рассказывает об основах построения графического интерфейса с помощью типов, содержащихся в пространстве имен System.Windows.Forms. Сначала вам предлагается создать несколько приложений вручную, и в процессе этого выясняется, что GUI-приложение, как минимум,


Резюме

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Резюме Аббревиатура GDI+ используется для обозначения ряда связанных пространств имен .NET, используемых для визуализации графических образов на поверхности производных от Control типов. Значительная часть этой главы была посвящена выяснению того, как работать с базовыми


Резюме

Из книги автора

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


Резюме

Из книги автора

Резюме В этой главе вы научились устанавливать пакет программ Nero 8 Premium Reloaded, познакомились со средствами запуска приложений пакета с помощью панели StartSmart, узнали, как работать со справочной системой приложений Nero 8 Premium. С помощью Start Smart пользователь пакета сможет


Резюме

Из книги автора

Резюме В этой главе вы узнали, как создавать слайд-шоу. Для этого были использованы средства входящего в пакет Nero 8 приложения Nero Vision. Теперь вы знаете, как поместить фотографии в цифровой фотоальбом, сделать к ним звуковое сопровождение, создать красивое и понятное меню


Резюме

Из книги автора

Резюме В этой главе вы узнали, что можно делать со звуковыми файлами при помощи встроенных в пакет Nero 8 приложений.Как записать файлы формата Audio CD на жесткий диск, как декодировать звуковые файлы в компактный MP3-формат, как с его помощью создать и сохранить на дисках свою


Резюме

Из книги автора

Резюме Подведем краткий итог тому, что вы узнали из этой главы. Прежде всего, вы познакомились с новым приложением Nero Vision, входящим в состав пакета Nero 8. Вы научились создавать диски формата Video CD, используя два приложения – Nero Vision и Nero Burning ROM. Вы узнали, как выбрать


Резюме

Из книги автора

Резюме Итак, подведем итог. Копирование дисков может осуществляться при помощи двух приводов, либо виртуального устройства. Копирование либо с помощью двух приводов осуществляется «на лету» с привода-источника на привод-приемник. А копирование посредством виртуального


Резюме

Из книги автора

Резюме В этой главе мы рассмотрели две очень интересные программы пакета Nero 8 Premium – Nero Vision и Nero Recode, которые позволяют создавать DVD-Video либо из собственных видеоматериалов, либо из уже имеющихся дисков DVD-Video. Теперь вы знаете, как можно, пользуясь Nero Vision, получить


Резюме

Из книги автора

Резюме Мы рассмотрели возможности пакета Nero 8 по архивированию и восстановлению данных средствами приложения Nero BackItUp. Теперь сохранение важной информации в виде резервных копий не будет представлять для вас трудностей. Воспользовавшись информацией из этой главы, вы


Резюме

Из книги автора

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


Резюме

Из книги автора

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


РЕЗЮМЕ

Из книги автора

РЕЗЮМЕ Основной темой данной главы было обсуждение возможностей управления ходом выполнения программы. Язык Си предоставляет много средств для структурирования программ. С помощью операторов while и for реализуются циклы с предусловием. Второй оператор особенно подходит


РЕЗЮМЕ

Из книги автора

РЕЗЮМЕ     Для создания больших программ вы должны использовать функции в качестве "строительных блоков". Каждая функция должна выполнять одну вполне определенную задачу. Используйте аргументы для передачи значений функции и ключевое слово return для передачи