The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Мониторинг нагрузки http-сервера Apache 2 (apache speed statistic performance)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: apache, speed, statistic, performance,  (найти похожие документы)
Автор: Alex <alexey_com@ukr.net> Newsgroups: email Date: Mon, 15 May 2011 17:02:14 +0000 (UTC) Subject: Мониторинг нагрузки http-сервера Apache 2 Вступление Уже написано немало постов на просторах интернета, о мониторинге веб-сервера Apache. При вводе такой фразы, как "мониторинг нагрузки apache" в строке поиска Google, результаты указывают на полезнейший модуль mod_status. А также о еще большей полезности этого модуля в сочетании с perl-расширениями. А если еще и немного пропатчить эти perl-расширения - то вообще супер система получается. Но настроив такую систему - системный администратор на этом, как правило, не останавливается, ему уже необходимо история нагрузки по серверу в целом, потом по каждому хосту, а далее и с точностью до скрипта. И чтоб потом сравнить можно было, а как раньше было, а как теперь нагрузка распределяется. И вот здесь на помощь может прийти модуль для веб-сервера Apache - mod_performance. И так, приступим к рассмотрению что этот модуль собой представляет. Это обычный модуль Apache 2.x для Linux. Из документации к нему: Модуль предназначен для сбора и накопления статистики по использованию ресурсов(CPU и memory, время выполнения скрипта) веб-сервером Apache 2.2. Модуль позволяет провести анализ собранных данных. Что все это значит? А то, что он позволяет отслеживать сколько ресурсов потребляет поступивший веб-серверу запрос. Каждый раз сохраняя следующую информацию:
  • виртуальный хост, которому поступил запрос;
  • файл, который запрашивается;
  • URI запроса;
  • CPU нагрузка в %;
  • использование памяти в %;
  • время обработки запроса. А накопившуюся статистику - позволяет анализировать. В качестве базы данных для сохранения и анализа используется SQLite. В качестве анализатора использования ресурсов, используется не scoreboard, как в mod_status и расширениях perl, а glibtop. Модуль позволяет отслеживать как абсолютно все запросы, так и конкретные, отфильтрованные по правилу с помощью регулярных выражений. Точнее будет сказано, что модуль ВСЕГДА обрабатывает только те запросы, которые соответствуют фильтру, содержащему регулярное выражение. Как просмотреть накопленные данные Модуль предоставляет два интерфейса для просмотра и анализа данных: 1) глобальный; 2) так называемый per-host. Каждый интерфейс прикреплен к хендлеру: user-status - per-host performance-status - глобальный Доступ к интерфейсам настраивается как и в модуле mod_status, т.е.: <Location /perf-status> Order allow,deny SetHandler performance-status Allow from 1.1.1.1 </Location> Глобальный интерфейс позволяет просматривать и анализировать накопленные данные по всем виртуальным хостам, per-host интерфейс же отображает и анализирует только информацию по хосту, к которому интерфейс прикреплен, например, если вызвать хост http://test.test.test/user-status, то вся выводимая статистика будет касаться только этого хоста. Статистика по другим хостам отображаться не будет. Глобальный интерфейс управления модулем выглядит, как приведено на рисунке ниже: На рисунке можно увидеть поля: Mode - режим отображения данных. Period - дней, период отображения или анализа данных, начиная от начала текущего дня. Period begin - начало периода, заданного в формате YYYY-MM-DD hh:mm:ss Period end - конец периода, заданного в формате YYYY-MM-DD hh:mm:ss Если заданы Period begin, Period end - в таком случае отображаются данные ограниченные этими параметрами, а поле Period - игнорируется. В противном случае анализируемый участок задается параметром Period. Hostname(SQL) - фильтр, выводить данные только по указанному хосту. Синтаксис вызова подобно конструкции like в SQL. Т.е. если задать "%test", то будут выбраны все хосты заканчивающиеся на "test". Script name(SQL) - подобно предыдущему параметру, только анализируется имя вызываемого скрипта. URI(SQL) - подобно предыдущему параметру, только анализируется URI запроса. Graph Mode(Y/N) - отображать графикой или текстом. Примерный вывод данных выглядит так: Хост приведенный в примере на картинке - абсолютно тестовый, если он совпадает с реальным - приношу извинения. А графический режим отображения приведен на рисунке ниже: Режимы анализа Show output without analytics - вывести собранную информацию без анализа, отфильтрованную по хосту, скрипту и URI(графический и текстовый режим). Maximal %CPU - вывести только записи с максимальным значением %CPU (с учетом фильтрации). Maximal memory % - вывести только записи с максимальным значением %memory(с учетом фильтрации). Maximal execution request time - вывести самыйдолго выполняющийся скрипт. Host requests statistics - вывести статистику обращений к хостам с сортировкой по убыванию (в % от общего числа с учетом фильтров). Execution history screen(use Period begin) - позволяет вычислять список выполняющихся запросов на указанное время Number of requests per domain - вывести статистику обращений к хостам с сортировкой по убыванию(не в процентах а количество). Average usage per host - вывести среднюю загрузку сервера каждым хостом(сумма % CPU, сумма % MEMORY, сумма выполнения скриптов, средний % CPU за период, средний % использования памяти, среднее время выполнения скриптов). Не буду вдаваться в подробности и некоторые режимы оставлю без внимания. Как установить модуль Здесь я привожу пример установки для rpm-систем. Все действия необходимо проводить под пользователем root. 1) установим необходимые пакеты для сборки: yum install httpd-devel apr-devel libgtop2-devel sqlite-devel gd-devel 2) создадим временную паку для исходных кодов: mkdir ~/my_tmp cd ~/my_tmp 3) скачиваем исходные коды модуля и распаковываем архив и переходим в распакованную папку: wget http://lexvit.dn.ua/utils/getfile.php?file_name=mod_performance_tar201104233487.gz -O mod_performance.tar.gz tar zxvf mod_performance.tar.gz cd mod_performance/ 4) собираем модуль: make 5) на warning не обращаем внимания. Главное, чтоб не было error. Если все собралось нормально, то: make install или cp .libs/mod_performance.so <путь куда копировать> Конфигурация Apache Конфигурация будет осуществляться для стандартной установки Apache, т.е модули располагаются в каталоге /etc/httpd/modules, существует каталог /etc/httpd/conf.d/ и он подключен в /ect/httpd/conf/httpd.conf. 1) создать файл конфигурации модуля: touch /etc/httpd/conf.d/mod_performance.conf 2) вставить в него: LoadModule performance_module modules/mod_performance.so <IfModule mod_performance.c> PerformanceHistory 5 PerformanceEnabled On PerformanceMaxThreads 80 PerformanceScript \.php PerformanceStackSize 1 PerformanceUseCanonical On <Location /admin-status> Order allow,deny SetHandler performance-status Allow from 1.1.1.1 </Location> </IfModule> 3) сохранить файл и перезапустить Apache: service httpd restart Файл конфигурации выступает лишь как пример. Все параметры должны быть подобраны под конкретный сервер. Вышеприведенная конфигурация модуля позволяет отслеживать запросы к php скриптам. Описание всех параметров конфигурации можно прочитать в документации модуля. Внимание, на текущий момент модуль не может отслеживать запросы для конфигурации сервера Apache+mod_fcgid, Apache+mod_cgid, Apache+suphp или конфигурации, где запрос обрабатывает отдельный демон.

  • << Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру