LXF77:Apache 2.2
|
|
|
Содержание |
Тяжёлый труд достался 2.0, а сейчас Дэвиду Каулсону (David Coulson) понравились мелкие детали.
Из Иллинойса пришло много хорошего: Чикагский блюз; Авраам Линкольн; мультик про Симпсонов. Но для нас, умников, всего дороже – может, даже краше Ракели Уэлш [американская актриса, – прим. перев.] – мощный web-сервер Apache, разработанный Робом Мак-Кулом (Rob McCool) и Национальным центром суперкомпьютерных приложений (National Center for Supercomputer Applications – NCSA). Еще на заре популярности Linux Apache стал однозначным выбором web-сервера почти для любых окружений. И небольшие сайты, работающие через телефонное соединение, и огромные кластеры – все строится на Apache.
Когда в апреле 2002 года увидел свет Apache 2.0.35, это был гигантский шаг вперёд. Однако многие остались на проверенном 1.3, опасаясь болезней роста 2.0. Потребовалось несколько ревизий PHP, чтобы он начала как-то работать, а запуск mod_perl был вообще чем-то из разряда черной магии. Из-за этих проблем преимущества нового релиза Apache остались незамеченными: большинство дистрибутивов проигнорировали пару релизов 2.0, прежде чем озаботились включением данного пакета.
Теперь, получив ещё тепленький Apache 2.2.0, люди оглядываются на 2.0, пытаясь разобраться, чего лишились. Крупнейшим изменением было использование многопроцессных модулей (MPM – multi-processing module) для обработки запросов ядром Apache. Версии 1.3 использовали структуру на базе процессов (требовался отдельный процесс на каж дый запрос), ограничивающую производительность. С выходом 2.0 появился потоковый MPM, известный как «работник (worker)», где один процесс Apache распадался на внутренние потоки для обработки HTTP-запросов.
Использование потоков значительно повышает производительность Apache, полезную в условиях хостинга: HTTP- демон меньше, а отклик быстрее. Потоки «работника» позволяют обслужить гораздо больше одновременных запросов, поскольку в одном процессе Unix потоков можно запустить неприлично много. По мере захвата потоков активными запросами, отпочковываются дополнительные процессы, создающие новые потоки.
Apache 2.2 предлагает также MPM по имени «perchild» (опять-таки впервые появившийся в 2.0), который умеет отпочко- вывать процессы Apache с различными правами. Это превосходно для виртуального хостинга, потому что сценарии PHP, CGI (Common Gateway Interface) и mod_perl могут исполняться от имени конкретного пользователя (а не общего пользователя демона, как в стандартных инсталляциях).
Для динамического виртуального хостинга это не идеально, поскольку пользователей нужно определять в конфигурации Apache и на каждый UID требуется свой процесс; но зато возникает дополнительный уровень защиты за счёт «правильного» распределения виртуальных хостов по UID’ам. На внутреннем уровне «prechild» предоставляет те же преимущества потоков, что и «работник», позволяя производительности Apache оставить другие web-сервера далеко позади.
Барьер 2 ГБ
После появления MPM в версии 2.0, для Apache было сложно выпустить 2.2 с такими же эффектными новшествами – возможно, наиболее близким по значимости является снятие бесславного ограничения 2 ГБ на размер файла в 32-битном окружении. На данный барьер гневался член ASF Рич Боуэн (Rich Bowen), озвучив выступление «Почему я ненавижу web-сервер Apache» на июльской конференции ApacheCon, и последние несколько лет он был предметом забот, поскольку дистрибутивы, выпущенные на DVD, нельзя было распространять через Apache и приходилось полагаться на другие HTTP-серверы или BitTorrent. так что разрешение этой проблемы версией 2.2 вызвало всеобщий восторг.
Другие улучшения Apache в 2.2 связаны с функциями прокси и фильтрацией, что порадует людей, запускающих Apache в режиме балансировки нагрузки или для обслуживания больших объёмов статического контента.
По части инсталляции, 2.2 почти полностью идентичен 1.3 или 2.0, только для модулей сторонних производителей, например, PHP, используется apxs2, а не apxs. MPM можно либо вкомпилировать в Apache, либо динамически подгружать как модуль. Сборка 2.2 занимает немного больше времени, но если отключить ненужные модули – выполняется почти мгновенно. модули можно собирать «на лету», без тотальной переустановки, чем значительно упрощается обновление модулей и тестирование новых функций. Вооружившись хорошо спроектированным API, можно сделать практически всё без перезагрузки web-сервера, хотя, как и в случае с ядром Linux, перезагрузка моду- лей покамест остается препятствием.
В принципе, последние версии Apache загружаются чуть медленнее, чем 1.3. Однако, в зависимости от конфигурации и подгружаемых модулей, время запуска можно существенно сократить.
Просто быстрее других
Первый вопрос любого администратора о развёртывании web-сервера – «Насколько быстро он будет обслуживать мой контент?». Apache 2.0 значительно превосходит в этом отношении 1.3, особенно при обработке большого числа одновременных запросов. Наши тесты показывают 50% сокращения времени отклика при переходе с 1.3 на 2.0, а 2.2 улучшила 2.0 лишь немного.
Для тестирования на реальной задаче мы шесть месяцев эксплуатировали Apache в промышленном режиме на трёхсерверном кластере; двумя из серверов были обновленные до версии 2.0 сервера 1.3. Более ранние инсталляции Apache начинали «тормозить» при 250 одновременных запросах, ожидая завершения установленных соединений, прежде чем создавать процесс для обработки новых. Время отклика порядка пяти секунд было обычным явлением. В случае с Apache 2.0 наш рекорд составил 450 соединений на сервер, с временем отклика кластера около 0,5 секунды. Причем нагрузка на процессор немного снизилась, а производительность возросла. Безусловно, без такой «рабочей лошадки» как Apache, мы не достигли бы такой статистики.
Всё ещё фаворит
Для платформ Unix решение использовать Apache принимается не задумываясь: он предоставляет невероятную гибкость и производительность, практически не оставляя шансов конкурентам.. Даже для пользователей Windows версия Apache для Win32 предоставляет открытый web-сервер, легко интегрирующийся в систему как сервис и работающий много лучше, чем Microsoft Internet Information Services.
Всем, кто сейчас использует Apache 1.3, советуем убедиться, что все их модули уже применяют новый API 2.x, и немедля приняться за переход к новой версии. Пользователи Apache 2.0 могут пожелать дождаться пары пересмотров версии, принимая во внимание возможные проблемы с API для сторонних модулей. В перспективе, Apache 2.3 предоставит дополнительные функции динамического хостинга, наряду с повышением производительности, которое очень понравится владельцам больших серверов.
На данном этапе Apache – лучшее приложение Linux. текущий релиз, как всегда, обеспечивает производительность и стабильность, которую мы привыкли ожидать от столь уважаемого и популярного проекта. Прости нас, Ракель.
Cамое главное
Модульный сервер для web-сайтов и приложений. также попробуйте: Boa и LightTPD.
- Разработчик: Apache Software Foundation
- Сайт: www.apache.org
- Цена: Бесплатно, по лицензии Apache
Вердикт Linux Format
- Возможности 10/10
- Производительность 10/10
- Простота использования 7/10
- Документация 10/10
При производительности, ранее наблюдавшейся лишь на небольших HTTP-серверах, версия 2.2 идеальна для развёртывания и больших, и маленьких web-сайтов.
- Рейтинг 9/10