Вход |  Регистрация

Все Тэги

Мониторинг Apache

07.11.20131874 просм.

Обзор

HTTP-сервер Apache – мультиплатформенный веб-сервер, с открытым кодом, гибкой конфигурацией и возможностью расширения. Сервер был разработан в 1995 году на основе NCSA httpd (демон HTTP). Со временем HTTP-сервер Apache стал одним из самых используемых для коммерческих веб-сайтов и веб-приложений.

Поскольку речь идет об одном из основных веб-серверов, важно понимать его высокоуровневую архитектуру, как работают счетчики мониторинга, аспекты настройки и другие наработки, обеспечивающие производительность. Мы коснемся всех этих моментов и познакомим с применением LoadRunner & PerformanceCenter для мониторинга веб-сервера Apache.

Архитектура

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

  • Ядро отвечает за определение шагов обслуживания заявки и соблюдения их последовательности.
  • Модули фактически реализуют различные этапы обработки заявки.

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

Apache 2.0 превосходит Apache 1.3 и по архитектуре, и по возможностям, хотя обе серии считаются достойными использования в продуктивной среде . Далее обратимся к описанию характеристик архитектуры Apache 2.0, обеспечивающих ее производительность:

  • Multi Processing Modules. Apache 2.0 поддерживает модули мультипроцессовой обработки (MPMs), чем существенно отличается от Apache 1.3, который основан на процессах и создает несколько дочерних процессов при начальной инициализации. MPMs подразумевают, что Apache можно конфигурировать или как сервер, основанный исключительно на процессах, или как потоковый сервер, или как комбинацию этих моделей.

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

  • Mодули и фильтры. Как было сказано, Apache поддерживает модульную архитектуру. Apache 2.0 добавляет еще один механизм расширения: фильтры. Фильтры позволяют модулям модифицировать содержание, генерируемое другими модулями. Они могут шифровать, проверять на наличие вирусов и сжимать не только статические файлы, но и динамически генерируемый контент.
  • Кроссплатформенная библиотека Apache Portable Runtime. Apache 2.0 хорошо работает как на платформе Windows, так и платформе UNIX, благодаря кроссплатформенной библиотеке Apache Portable Runtime (APR). Она абстрагирована от различий между операционными системами, такими как API файлового или сетевого доступа. Данный уровень абстракции также позволяет выполнить специфическую для платформы настройку и оптимизацию. APR использует концепцию пулов памяти, что значительно упрощает управление памятью и снижает вероятность утечек памяти. 

В соответствии с архитектурой Apache, счетчики Apache для понимания и мониторинга состояния сервера берутся из модуля Apache mod_status. Модуль статуса предоставляет информацию о работе и производительности сервера. Статистика по серверу доступна в виде HTML страницы в легко читаемом формате (например, http://your.server.name/server-status) или – для автоматизации процесса мониторинга – в простом списке (например, http://your.server.name/serverstatus?auto). Оба режима могут конфигурироваться для автоматического обновления статуса путем добавления параметра обновления в URL запрос. Например, http://your.server.name/server-status?auto&refresh=30 будет автоматически обновлять машиночитаемый статус каждые 30 секунд.

Модуль mod_status можно конфигурировать для предоставления расширенного статуса. По умолчанию эта опция отключена.

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

Основные счетчики Apache

Монитор HP LoadRunner/Performance Center Apache создан для отслеживания значений счетчиков, которые доступны на машиночитаемой странице (server-status?auto). HP SiteScope поддерживает оба режима. Самые важные счетчики представлены на машиночитаемой странице.

Счетчик                                        Описание

  • CPULoad                              Текущая загрузка процессора (в процентах) сервером Apache
  • ReqPerSec                           Количество запросов в секунду (иначе говоря, число обращений в секунду)
  • BytesPerSec                        Количество байтов, переданных в секунду
  • BytesPerReq                       Количество байтов, переданных на один запрос
  • BusyWorkers                      Количество активных потоков, обслуживающих запросы
  • IdleWorkers                        Количество неактивных потоков

Подсказка: Все указанные счетчики есть на странице server-status?auto.  Можно легко создать скрипт VuGen и самостоятельно анализировать данные этих счетчиков и передавать их в LoadRunner/Performance Center в режиме онлайн, используя lr_user_data_point.

Оптимизация и настройка

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

  • Директива HostnameLookups должна быть отключена («off» по умолчанию). При включении DNS-поиск требует много времени и замедляет работу сервера.
  • Директива KeepAlive должна быть включена («on» по умолчанию). KeepAlive обеспечивает большую продолжительность HTTP-сеансов, что позволяет отправлять многочисленные запросы по одному и тому же TCP-соединению. Это, как показывает практика, существенно сокращает время отклика.
  • Директива KeepAliveTimeout устанавливает время ожидания (в секундах), в течении которого Apache будет ожидать следующий запрос перед тем, как закрыть соединение. Конфигурация настроена по умолчанию на 15 секунд. Чем выше время ожидания, тем больше серверных потоков будут оставаться занятыми, ожидая соединения с неактивными клиентами.
  • Избегайте пользоваться файлами .htaccess. Использование файлов .htaccess можно полностью блокировать, если в настройках отключить директиву AllowOverride. Когда настройка AllowOverride позволяет использование файлов .htaccess, Apache будет их искать в каждой директории. Разрешение на использование файлов .htaccess приводит к падению производительности, независимо от того, действительно ли они используются или нет. К тому же, файл .htaccess будет загружаться каждый раз при запросе документа.
  • Рекомендуем выгружать неиспользуемые модули для оптимизации использования памяти.
  • Директива MaxKeepAliveRequests. Веб-сервер ни в коем случае не должен использовать своппинг, поскольку это увеличивает время ожидания по каждому запросу свыше предела, который пользователи считают «достаточно быстрым». Это приводит к тому, что пользователи останавливают загрузку и обновляют страницу, еще больше увеличивая нагрузку. Можно и нужно контролировать настройку MaxClients, для предупреждения ситуации, когда сервер порождает столько дочерних процессов, что это приводит к свопингу.

Директива MaxKeepAliveRequests определяет максимальное количество дочерних процессов, создаваемых для обслуживания запросов и ограничивает количество параллельных запросов, которые попадут на обслуживание. Любые попытки соединения свыше лимита MaxClients обычно попадают в очередь, пока не достигнут предела, устанавливаемого директивой ListenBacklog. Стоит настроить ее на максимальное количество клиентов, с которым может справиться операционная среда, не вызывая снижения пропускной способности или неприемлемого увеличения времени отклика.

Метки: , , , , ,

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Партнеры DevOpsHub и DevOpsWiki