Nginx vs Apache производительность и методы оптимизации

Ссылочный блог

Apache был выпущен в 1995 году и, согласно Википедии, «сыграл решающую роль в развитии Всемирной паутины». Сегодня он остается наиболее часто используемым серверным программным обеспечением. Однако тенденция такова, что доля Apache на рынке уменьшается, а доля Nginx увеличивается.

Nginx был выпущен в 2004 году. Первоначально его использовали в качестве добавки к апачу. Однако его популярность неуклонно растет.

Apache существует уже долгое время и имеет большой набор доступных для него модулей. Известно, что администрирование сервера Apache удобно для пользователя. Динамическая загрузка модулей позволяет компилировать и добавлять различные модули в стек Apache без необходимости повторного копирования бинарных файлов основного сервера.

Эта гибкость пока недоступна в Nginx. Из руководства по настройке NGINX для HTTP/2 ясно, что его модули формируются во время создания.

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

Nginx не только не имеет эквивалентного решения, но и мешает работе приложений из-за снижения производительности.

Доля рынка различных серверов, 1995-2005 гг.

Litespeed можно сравнить с Apache. Однако проблем с производительностью нет.

Как и Apache, он поддерживает .htaccess, mod_security и mod_rewrite. Litespeed разработан как замена Apache. Он работает на CPANEL и PLESK и поддерживает HTTP/2 с 2015 года.

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

Вопросы аппаратного обеспечения

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

ЧИТАТЬ ЕЩЁ:  Тенденции в построении адаптивной системы навигации

Мониторинг

HTOP — это эффективный способ мониторинга текущей производительности стека сервера.

Другие инструменты мониторинга включают новый реликт — NetData. Последнее решение позволяет отправлять оповещения в системные приложения или процессы, такие как электронная почта, Slack, Pushbullet, Telegram и Twilio.

Monit — это еще один инструмент с открытым исходным кодом, который может отслеживать работу системы. Он может быть настроен на отправку предупреждений при выполнении определенных условий, перезапуск определенных процессов или перезагрузку системы.

Тестирование системы

AB (Apache Benchmark) — это простой инструмент контроля нагрузки Apache Foundation. Еще одним инструментом тестирования является Siege. Существует еще один инструмент на базе Python — Locust.

После установки Locust вам необходимо создать файл Locust в списке, в котором вы хотите запустить свое приложение.

Затем запустите инструмент из командной строки.

Рекомендуется ограничить тестирование собственным местоположением, поскольку вышеуказанные инструменты создают эффект DDOS-атаки.

Настройка Apache

Раздел Apache MPM

В первые дни Apache создавал новый процесс для каждого входящего TCP-соединения и ответа. Если появлялись другие соединения, создавались другие процессы для их обработки.

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

Он известен как mpm_prefork_module. Эта функция требует минимальной настройки. Значение, установленное директивой MaxRequestworkers, должно быть достаточно большим, чтобы обработать столько приложений, сколько ожидается получить. Но достаточно мала, чтобы обеспечить необходимый объем физической памяти для всех процессов.

Тесты Locust показывают создание огромного количества процессов Apache для управления входящим движением.

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

ЧИТАТЬ ЕЩЁ:  Аукцион доменов - в погоне за именем

В версии 2 Apache были применены два других MPM, которые пытались решить проблемы, связанные с функцией pre-fault. Это рабочая секция (MPM_Worker_Module) и секция событий.

Раздел Worker реализует гибридную функциональность для рабочих на основе потоков процесса. Согласно официальному сайту Apache:.

Процесс управления родителями отвечает за инициирование процессов. Каждый из них создает фиксированное количество потоков, задаваемое дочерней инструкцией thread spur. То же самое относится к потокам, которые перенаправляются в поток сервера для прослушивания соединений и их обработки по прибытии.

Эта функция позволяет более эффективно использовать ресурсы.

В версии 2.4 Apache появился раздел Events. Он добавляет отдельный поток слушателя, который обрабатывает неактивные соединения после завершения HTTP-запроса. Это асинхронная функция, которая не блокирует и не потребляет память.

Тестовая установка WooCommerce с 1200 записями на виртуальном сервере была загружена и протестирована на Apache 2.4 в стандартном режиме, Prefork и Mod_Php.

Попробовал сначала с libapache2-mod-php7 и mpm_prefork_module по адресу https://tools.pingdom.com:.

MPM-модули Apache - 2

Далее мы попробовали раздел событий MPM. Multiverse необходимо было добавить в /etc/apt/sources.list.

Затем я запустил sudo apt-get update и установил libapache2-mod-fastcgiphp-fpm.

PHP-FPM является отдельной службой от Apache и поэтому требует перезапуска.

Далее была отключена секция pre-fault и активированы режим событий и proxy_fcgi.

Далее в виртуальный хост Apache был добавлен следующий фрагмент кода

Указанный порт должен соответствовать настройкам PHP-FPM в /etc/php/7.0/fpm/pool.d/www.conf. Более подробную информацию о конфигурации PHP-FPM смотрите здесь.

Далее настройте mpm_event /etc/apache2/mods-abailable/mpm_event.conf. Для получения дополнительной информации о каждом веб-сайте Apache и

Директива MaxRequestworkers устанавливает ограничение на количество одновременно работающих приложений. Значение, отличное от нуля, предотвращает возможные утечки памяти.

Затем сервер был перезапущен с помощью команды Sudo Service Apache2 restart. Тест pingdom показывает, что время загрузки страниц сократилось вдвое.

ЧИТАТЬ ЕЩЁ:  SEO СЕО что это такое зачем нужна оптимизация

Другие советы по настройке Apache

отключить .htaccess: Этот файл позволяет создавать настройки параметров для каждого отдельного каталога в корне сервера без перезагрузки. Поэтому обход всех каталогов и поиск файлов .htaccess в каждом приложении приведет к низкой производительности.

Выдержка из документации Apache:.

Файлы .htaccess следует использовать только в том случае, если у вас нет доступа к основным конфигурационным файлам сервера. Дополнительные параметры конфигурации .htaccess также могут быть созданы в модуле в основном файле конфигурации сервера.

Решением является отключение этого файла в файле /etc/apache2/apache2.conf.

Если .htaccess требуется для определенного каталога, он может быть включен в модуль виртуального хоста.

Оцените статью