Меню

Keep alive apache настройка



Тюнинг сервера Apache

Apache — самый популярный Web сервер. Настройка некоторых параметров (тюнинг) может дать существенный прирост в скорости его работы.

Конфигурация

Настройка Apache проводится в конфигурационном файле. Его можно найти:

Debian
Freebsd

Модули

Отключайте модули, которые Вам не нужны. Это сэкономит множество ресурсов на обработке запросов. Модули Apache обычно поставляются как плагины (DSO), поэтому их включение и отключение делается просто через конфигурационный файл.

Обычно Вам не нужно ничего, кроме таких модули:

MPM позволяет выбрать метод обработки параллельных запросов. Оптимальный вариант — Worker — поточный MPM. В нем каждый запрос обслуживается в отдельном потоке одного из дочерних процессов. Потоки — более легкие для ОС объекты, чем процессы. Следовательно, в этом случае производительность повышается.

Для включения Worker MPM, нужно открыть файл

и убрать комментарий со строки

AllowOverride и .htaccess

Директива AllowOverride включайте использование файла .htaccess. В этом случае при каждом запросе Apache будет искать этот файл в запрашиваемых директориях. Перемещайте всю конфигурацию в файлы виртуальных хостов (папка /etc/apache2/sites-enabled/ для Debian) и отключите использование htaccess:

MaxClients

Директива MaxClients устанавливает максимальное количество параллельных запросов, которые будет обрабатывать сервер. Эту настройку нужно адаптировать с течением времени, работайте в пределах значений в 128. 4096:

Если сервер уже обслуживает MaxClients запросов, новые запросы попадут в очередь, размер которой устанавливается с помощью директивы ListenBacklog.

MinSpareServers, MaxSpareServers, и StartServers

Эти директивы позволяют заранее иметь в памяти созданные процессы, чтобы не приходилось этого делать во время получения запроса. Они устанавливаются только для prefork mpm.

# При запуска Apache будет создавать 3 процесса

# Apache не будет убивать свободные процессы, если их остается менее трех

# Максимум 5 свободных процессов, остальные будут уничтожаться

MaxRequestsPerChild

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

# После 4096 обработанных запросов процесс будет перезапущен

KeepAlive

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

# Включаем KeepAlive и устанавливаем время ожидания перед закрытием соединения в 30 секунд

Бывают случаи, когда пользователь отправляет только один запрос. Например, download-сервер. Тогда KeepAlive может быть бесполезен и даже вреден, т.к. при включенном KeepAlive сервер закрывает соединение не сразу, а ждет какое-то время (KeepAliveTimeout).

Сжатие

Все современные браузеры поддерживают сжатие. Включение gzip существенно уменьшит размер трафика. Это нужно делать всегда.

Проверьте, что сжатие заработало с помощью Online Gzip checker.

Выключайте лишние запросы к DNS в Apache:

# Так Apache будет записывать в лог IP адрес клиента вместо его хоста.

Всегда используйте IP адрес в директивах Allow From и Deny From, а не доменные имена.

Самое важное

Самым большим эффектом на посетителей окажет включение сжатия gzip. Часто это экономит около 70% трафика.

Основы оптимизации работы Web сервера

Кэширование динамических сайтов с помощью ESI

Примеры использования Lua в Nginx для решения стандартных задач

Кэширование динамических страниц с помощью SSI

Настройка Nginx для отдачи статических файлов

Как использовать Varnish для кэширования HTTP запросов

4 шага и 9 инструментов для анализа нагрузки на сервер

Использование Nginx, как кэширующего сервера

Примеры применения Javascript в Nginx’e

Главные возможности нового протокола HTTP/2

Улучшение производительности PHP приложений

Улучшение производительности Web сервера на Ubuntu

Распространенные ошибки конфигурации Nginx, подводные камни и лучшие практики

Тюнинг Freebsd для повышения производительности Web сервера

Как настроить Nginx на максимальную эффективность

Как собирать статистику Nginx при помощи встроенного модуля и Zabbix

Методы улучшения производительности TLS/SSL

Читайте также:  Настройка измерителя регулятора овен

Fuzzy search на основе ElasticSearch

Небольшие советы для упрощения работы с Subversion

Простое развертывание приложений и сервисов при помощи Subversion

Асинхронные задачи для оптимизации скорости сайта

Рекомендации по настройке Redis для оптимизации ресурсов и повышения стабильности на производственном сервере

Источник

Настройка Apache

Установим минимально необходимые для работы атрибуты, для этого откроем для редактирования файл /etc/httpd/conf/httpd.conf

Apache может работать с одним из трех доступных мультипроцессорных модулей (mpm):

  1. prefork — один процесс на запрос, наиболее часто используемый модуль;
  2. worker — несколько процессов с несколькими нитями у каждого;
  3. event — новый экспериментальный вариант стандартного worker мультипроцессорного модуля.

Для просмотра информации о модулях выполните:

Пример конфигурации для Apache 2.4

ServerLimit 256
StartServers 20
MinSpareServers 20
MaxSpareServers 20
MaxRequestWorkers 256
MaxConnectionsPerChild 4000

MaxRequestWorkers установите значением, равным ServerLimit.

Пример конфигурации для Apache 2

В секции , например, установим следующие значения:

StartServers 5
MinSpareServers 10
MaxSpareServers 10
MaxClients 30
ServerLimit 30

StartServers — количество запускаемых процессов, рассчитываете как (Всего памяти — Память для сервера, MySQL, Memcache и т.д.) / размер процесса. Например, 64Gb — 32Gb / 0.256Gb = максимум 125 процессов.

MinSpareServers — минимальное количество простаивающих процессов.

MaxSpareServers — максимальное количество простаивающих процессов.

MaxClients — лимит процессов.

ServerLimit — устанавливается аналогичным значению MaxClients.

Обстоятельно необходимо подходить к расчету MaxClients, т.к. при установке малого значения может увеличиться количество отказов вэб-сервера в обслуживании на запрос клиента. Установка слишком большого значения может привести к свопингу и значительному увеличению времени ответа вэб-сервера.

При использовании одноуровневой и двухуровневой конфигурации вtб-сервера лимиты устанавливаются по-разному. Отдавая сформированные страницы более легкому вtб-серверу (например, nginx), лимиты можно понизить. Конкретные значения рассчитываются индивидуально для каждого вэб-сервера.

KeepAlive

При запросе страницы с вэб-сервера, браузер отправляет множество запросов на загрузку CSS-стилей, изображений и т.п. Использование KeepAlive позволяет запросить страницу и сопутствующие ей файлы в течение одного соединения.

  1. Включаем KeepAlive, для этого строку KeepAlive Off заменяем на KeepAlive On.
  2. MaxKeepAliveRequests установим в значение 100.
  3. KeepAliveTimeout наиболее часто устанавливается в диапазоне 2 — 10. Рекомендуем установить 5 секунд.

Источник

Как настроить сервер Apache на максимальную производительность

В наши дни все ждут от сайтов молниеносной скорости загрузки. В этой статье мы рассмотрим лучшие методы оптимизации сервера Apache.

Что замедляет сервер?

Работа веб-серверов может замедляться из-за вредоносных программ, больших объемов трафика или из-за неправильного распределения ресурсов. Есть два пути ускорения работы веб-сервера Apache:

Круглосуточный мониторинг производительности и экстренные исправления.

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

Периодический аудит производительности и настройка Apache.

Позволяет найти уязвимости сервера и защитить их.

Как ускорить работу Apache?

Настроить производительность Apache таким образом, чтобы она соответствовала объемам получаемого трафика. Таким образом можно добиться 50% ускорения работы.

5 шагов для ускорения работы Apache

Ускорить работу Apache можно на двух основных стадиях:

  • Во время компиляции – настройки при установке сервера.
  • Во время выполнения — установка параметров, влияющих на сервер во время его работы.

1. Настройки для ускорения Apache во время компиляции

Нужно выбирать вариант установки Apache, исходя из ваших требований. Это поможет создать быстрый и эффективный веб-сервер.

а. Загружайте только нужные модули

В Apache функциональность реализуется путем добавления модулей. Они бывают двух типов: статические и динамические (общие).

Чтобы посмотреть список модулей, поддерживаемых вашим сервером, используйте команду apachectl -M. Статические модули компилируются в бинарные файлы httpd, а динамические загружаются непосредственно во время выполнения.

Статические и динамические модули : ключевые различия

Статические модули Динамические модули
Компилируются в бинарные файлы Добавляются во время выполнения
Требуют перекомпиляции кода Перекомпиляция не требуется
Быстро загружаются Замедляют веб-сервер

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

Читайте также:  Секционные ворота настройка пружины

Но большое количество динамических или общих модулей может замедлить работу сервера Apache и сайта. Поэтому при выборе модулей требуется соблюдать осторожность.

Чтобы увеличить скорость работы и производительность, используйте минимальное количество динамических модулей, поскольку они уменьшают объем доступной памяти.

b. Выберите правильный MPM

В Apache используются MPM (мульти-процессинговые модули), которые обрабатывают запросы, приходящие на сервер. Они прослушивают сетевые порты сервера, принимая запросы и создавая дочерние процессы.

MPM бывают двух типов: Prefork и Worker. В MPM Prefork каждый процесс httpd обрабатывает один сетевой запрос. Это более безопасно по сравнению с MPM Worker, но требует большего количества памяти и ресурсов.

MPM – Prefork и Worker

MPM Prefork MPM Worker
Один поток Несколько потоков
Использует больше ресурсов Использует меньше памяти
Отказоустойчив Справляется с большим трафиком

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

По умолчанию большинство установок Apache используют модуль Prefork. Он применяется для обработки больших объемов трафика. Вы можете проверить, какой модуль MPM использует ваш сервер при помощи следующей команды:

Определение типа MPM на вашем веб — сервере Apache

В Apache 2.4 появилась поддержка э MPM модуля Event, который может обрабатывать множественные запросы внутри одного потока. Поэтому он работает даже быстрее, чем модуль Worker.

2. Ускорение работы Apache изменениями во время выполнения

Чтобы повысить производительность сервера, нужно регулярно измерять производительность и осуществлять тонкую настройку конфигурации. Наиболее важные параметры, которые нужно оптимизировать:

a. Поиск DNS

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

При настройке директив Allow from или Deny from используйте IP-адреса вместо доменных имён. Иначе будет осуществляться двойной поиск имени DNS, который уменьшит производительность сервера.

b. Настройка AllowOverride

Если задана опция AllowOverride, то Apache попытается открыть файл .htaccess в каждой папке, которую он посещает. Эти дополнительные запросы к файловой системе увеличивают время отправки ответа с сервера.

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

c. Настройки FollowSymLinks и SymLinksIfOwnerMatch

Настройка Apache FollowSymLinks сообщает серверу, что нужно проверять символические ссылки и проходить по ним. Если она имеет значение Off, Apache придётся выполнять дополнительные проверки, что замедлит его работу.

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

Лучше всего активировать директиву FollowSymLinks и выключить директиву ‘SymLinksIfOwnerMatch’. Но это может привести к проблемам с безопасностью, поэтому окончательное решение остается за вами.

d. Согласование содержимого (Content Negotiation)

Согласование содержимого позволяет клиентам выбирать формат данных, получаемых от сервера. Рекомендуется избегать согласования содержимого для быстрого ответа.

Если согласование содержимого необходимо для сайта, можно снизить задержки, используя файлы type-map вместо директивы Options MultiViews. Ее применение увеличивает задержку.

e. Настройка MaxClients

Настройка MaxClients устанавливает лимит количества одновременных запросов, которое может поддерживаться Apache. Если это значение слишком мало, запросы станут в очередь, и не будут обрабатываться.

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

f. Настройки MinSpareServers, MaxSpareServers и StartServers

MaxSpareServers и MinSpareServers определяют количество дочерних процессов, которые будут находиться в состоянии ожидания обработки запросов. Эти параметры важны, потому что создание дочернего процесса отнимает ресурсы.

Читайте также:  Возможные настройки сетевого адаптера

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

Значение MaxSpareServers не должно быть слишком большим. Так как стоящие в очереди на обработку дочерние процессы потребляют лишние серверные мощности. Нужно установить эти значения в оптимальном диапазоне, чтобы сбалансировать использование ресурсов и производительность.

Директива StartServers устанавливает количество дочерних серверных процессов, которые создаются при старте сервера. Если запросов много, а Apache часто перезагружается, нужно установить относительно большое значение.

g. Настройка MaxRequestsPerChild

Директива MaxRequestsPerChild устанавливает лимит количества запросов, которое будет обрабатывать каждый дочерний процесс. Слишком малое значения может привести к перегрузке сервера при создании новых процессов. Поэтому нужно установить это значение в диапазоне нескольких тысяч, чтобы ускорить работу Apache.

h. Настройка KeepAlive и KeepAliveTimeout

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

KeepAliveTimeout определяет время ожидания следующего запроса. Если значение большое, дочерние процессы могут расходовать ресурсы, ожидая следующего запроса. Оптимальное значение – 2-5 секунд для небольших объемов трафика и 10 секунд для высоконагруженных серверов.

i. Timeout

Устанавливает время ожидания запроса от посетителя. При больших объемах трафика значение параметра должно быть не менее 120 секунд. Но лучше держать это значение минимальным. Это позволяет предотвратить излишнее расходование ресурсов.

3. Сжатие и кэширование HTTP

Сжатие HTTP применяется для ускорения работы серверов Apache. Сервер применяет к телу ответа шифрование gzip или deflate перед тем, как отправить его клиенту. Затем клиент распаковывает полученные данные. Данные сжимаются только если браузер запрашивает сжатие. Сжатие HTTP включается в Apache с помощью модуля ‘mod_deflate’.

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

Модули mod_expires и mod_headers для настройки кэша через HTTP- заголовки, присылаемые с сервера. С помощью директив cache-control можно управлять правилами кэширования, чтобы ускорить работу Apache.

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

4. Разные серверы для статического и динамического контента

Процессы Apache, которые управляют динамическим контентом, потребляют от 3 до 20 Мб памяти. Статический контент требуют всего лишь 1Мб памяти. Процесс, управляющий динамическим контентом, при следующем запросе может предоставлять статический контент.

Что приводит к расходам памяти и замедлению работы сервера. Поэтому рекомендуется разделить серверы на управляющие статическим контентом и динамическим контентом.

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

Для подобного перенаправления запросов используются модули mod_proxy и mod_rewrite. Клиент не заметит разницы, и будет считать, что все запросы выполняются одним сервером.

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

5. Тонкая настройка MySQL и PHP

Не менее важно оптимизировать сервер баз данных, чтобы избежать задержек в его работе. Также необходимо улучшить производительность PHP-страниц, используя механизм кэширования, такой как Zend OPcache.

Сервер MySQL оптимизируется путем настройки фрагментации таблиц, максимального количества подключений, размеров буфера, кэша запросов, пула и т.п.

Заключение

Настройка производительности Apache – нелёгкое дело. Поэтому важно иметь чёткое понимание технических требований веб-сервера и принципа его работы.

Источник

Adblock
detector