Вы здесь

Сравнение конфигураций веб-сервера

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

Экспериментальная конфигурация

Я установил Друпал 4.7 с 2 000 пользователей, 5 000 документов, 5 000 альтернативных путей, 10 000 комментариев и 250 терминами в 15 словарях. Если вы не знаете что всё это значит, вы скорее всего не пользователь Друпала. Это нормально. Если у вас базовые знания о веб-серверах, то результат может быть вам всё же интересен.

Затем я настроил показ на первой странице 10 документов, включил некоторые блоки как в правой, так и в левой колонках, настроил основные ссылки и добавил форму поиска сверху страницы. Я также настроил контактную страницу через модуль Contact. Картинка ниже показывает, как в итоге выглядела первая страница сайта.

Сравнение конфигураций веб-сервера

Тестирование выполнялось на трёхлетнем Pentium IV 3 ГГц, 2 ГБ RAM, под управлением Gentoo Linux. Я использовал следующие программы: Apache 2.0.55, Lighttpd 1.3.16, PHP 4.4.2, PHP 5.1.4 и MySQL 4.1.4, без индивидуальных конфигураций и настроил параметры, которые просто необходимы для работы сайта. Для расчёта количества запросов в секунду использовалась программа ab2 для Apache.

Кеширование страниц

У Друпала есть механизм кеширования, который хранит динамически сгенерированные страницы в базе данных. Кешируя страницы, Друпал не создаёт страницу заново при каждом её запросе. Кешируются только те страницы, которые запрашиваются анонимными посетителями (пользователями, которые не вошли в аккаунт). Как только посетитель входит в аккаунт, кеширование для него выключается, так как страницы могут быть персонализированы различными путями. На некоторых сайтах, таких как этот блог, все кроме меня являются анонимными посетителями, в то же время на других сайта, доли анонимных посетителей и зарегистрированных пользователей могут значительно различаться.

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

APC

APC (альтернативный механизм кеширования для PHP) является свободным расширением PHP, которое оптимизирует быстродействие PHP-приложений кешируя PHP-код в компилированное состояние.

Сравнение конфигураций веб-сервера

Высокие полосы лучше. Это означает, что вы можете обрабатывать больше страниц в секунду.

С APC моя конфигурация смогла обслуживать в 4 раза больше страниц для анонимных посетителей и в 2 раза больше страниц для зарегистрированных пользователей.

PHP 4 или PHP 5?

На рисунке ниже показано сравнение PHP 4 и PHP 5. Видно, что PHP 5 может обрабатывать для анонимных посетителей на 13% меньше запросов в секунду, чем PHP 4 и на 4% меньше запросов для зарегистрированных пользователей.

Сравнение конфигураций веб-сервера

Реверс-прокси?

Когда прокси, такой как Squid, настроен как реверс-прокси, он может действовать как механизм кеширования. Так как реверс-прокси находится между Интернетом и веб-сервером, он может перехватывать все запросы и отвечать на них на основе кешированного содержания. Это снижает загрузку веб-сервера и базы данных.

Я не настраивал реверс-прокси для этих экспериментов, потому что в настоящее время Друпал не умеет генерировать правильные HTTP-заголовки для управления механизмом кеширования. Также, Друпал работает таким образом, что его настройка для реверс-прокси является достаточно сложной.

Единственным сценарием где это легко настроить и вероятно будет выгодно так и поступить, это сайт, на котором все посетители являются анонимными.

mod_php или FastCGI?

Есть много способов работы PHP. FastCGI и mod_php являются двумя наиболее часто используемыми. Большинство людей используют mod_php, потому что он установлен по умолчанию почти во всех сборках Линукса. С mod_php, PHP работает как модуль Apache и в результате, все PHP-приложения выполняются с привилегиями Apache. Это значит, что файлы Друпала должны быть доступны для чтения (а иногда и для записи) Apache.

При использовании FastCGI, веб-приложения могут работать с привилегиями, которые отличаются от привилегий Apache. Таким образом, FastCGI часто используется на общих хостингах, чтобы обеспечить дополнительную безопасность. Используя FastCGI, вы можете предотвратить чтение и запись ваших файлов другими пользователями системы. Однако обратная сторона этого — снижение быстродействия, так как FastCGI требует дополнительных ресурсов.

Поэтому когда вы выбираете между mod_php и FastCGI, вы пытаетесь найти компромисс между безопасностью и быстродействием. На рисунке ниже показано относительное быстродействие этих подходов. При переходе с mod_php на FastCGI, мы наблюдаем 63% снижение быстродействия для анонимных посетителей и 18% снижение быстродействия для зарегистрированных пользователей.

Сравнение конфигураций веб-сервера

Apache или Lighttpd?

Lighttpd (или Lighty) является HTTP-демоном, который предназначен для высокопроизводительных сред. Его целью являются скорость и небольшой объём используемой памяти. На рисунки ниже показано сравнение Lighttpd с Apache.

Сравнение конфигураций веб-сервера

Выводы

Так какая конфигурация из испытанных лучшая и худшая? И какая является самой быстрой и при этом безопасной? Выяснилось, что самая медленная конфигурация это Apache 2, PHP5 работает как модуль Apache и не используется APC. К сожалению, это одна из самых распространённых конфигураций. Самая быстрая конфигурация использует безопасный подход с FastCGI, с одной стороны, есть Lighttpd с PHP4 использующий режим FastCGI и APC. Для анонимных посетителей, последняя конфигурации почти в 4 раза быстрее чем первая, одновременно с этим она ещё и безопаснее. Это показано на рисунке ниже.

Сравнение конфигураций веб-сервера

Если вы не на общем хостинге, вы можете не заботиться о безопасности и преимуществах FastCGI. В этом случае, вас может заинтересовать следующий рисунок. Оказалось, что для анонимных посетителей, моя самая быстрая конфигурация Apache на 3% быстрее, чем самая быстрая конфигурация Lighttpd.

Сравнение конфигураций веб-сервера