Определяем нагрузку на сервер Apache

    image

    Как получить данные о работе web сервера Apache и представить их в удобном для анализа виде.?

    Начнём с получения данных.

    Для того этого, необходимо подключить модуль mod_status. Он отслеживает работу сервера и показывает данные в виде обычной html страницы. С его помощью можно узнать:


    1 количество процессов, выполняющих обработку запросов;
    2 количество процессов, которые находятся в состоянии ожидания;
    3 состояние каждого процесса, число обработанных им запросов и переданных данных;
    4 общее количество запросов и переданных данных;
    5 время работы сервера (запуск, перезапуск и общее время работы (uptime));
    6 общая статистика: среднее число запросов в сек, байт на запрос, байт в сек;
    7 использование CPU каждым процессом отдельно и apache’ем в целом в данный момент;
    8 хосты и их запросы, которые обрабатываются в данный момент.

    Переходим к настройке

    1 Подключаем модуль.
    Для этого в файле httpd.conf снимаем комментарий со строки
    LoadModule status_module modules/mod_status.so


    2 И открываем доступ к статистике. Добавляем в httpd.conf следующие строки
    # включаем расширенную статиститку
    ExtendedStatus On

    <Location /server-status>
    SetHandler server-status

    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1



    Примечание. Здесь мы разрешили доступ к статистике только для адреса 127.0.0.1 (localhost). Для тестирования удаленного сервера вам нужно будет эту настройку изменить.

    3) Перезапускаем apache.

    Теперь можно просматривать статистику.

    Для этого вводим в браузере URL
    localhost/server-status


    или, если вы хотите, чтобы страница обновлялась автоматически

    localhost/server-status?refresh=15


    (вместо цифры 15 ставите задержку в секундах).

    Есть ещё один вариант страницы с этими же данными:

    localhost/server-status?auto&refresh=3


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

    Например, на скриншоте показано состояние процессов apache.

    image

    Символ подчеркивания означает, что процесс ожидает соединения, буква «W» — отправка ответа, точка – открытый слот без процесса.

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

    Кроме того, если у вас данные постоянно обновляются (используется параметр refresh), то визуально оценить изменения будет очень сложно.

    В этом случае удобно использовать скрипт, который будет собирать данные, и показывать их, например, в виде графика.

    Можно написать такой его самостоятельно, но проще использовать готовый.

    В качестве примера такого скрипта рассмотрим Visualize Apache Server Status (распространяется под LGPL лицензией).

    Скрипт состоит из 3-х частей.

    1 Конфигурационный файл (inc.config.php). Тут нужно указать адрес страницы со статистикой:
    $statusurl = "http://localhost/server-status";


    Время обновления данных и масштаб (используется для построения графика).
    $refreshtime = 2;
    $scalefaktor = 1;


    2 Два скрипта (serverstatus.php и serverstatus2.php). Используются для отображения данных. Запускать можно любой из них. Информация одна и та же, только представлена по-разному.

    serverstatus.php

    image

    serverstatus2.php

    image

    3) Класс, выполняющий анализ страницы со статистикой (class.parse_server_status.php). Самый интересный компонент ;). Его можно использовать в собственных скриптах.

    При работе вам будут нужны 2 метода этого класса.

    1 parse_server_status($url) – в параметре $url задаем адрес страницы со статистикой.

    2 getActiveConnections() – возвращает массив с информацией об активных соединениях. На данный момент этот массив содержит: идентификатор процесса, режим работы, время работы процесса, использование CPU, имя виртуального хоста и URI запроса.

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

    Удачи!

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 7

      0
      как ты думаешь, много людей знает о сабже?

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

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

      3.а ты знаешь, что эта статистика очень неточна? например req/sec там вобще не соответствует реальным значениям, т.к. это среднее с момента запуска сервера.
      и считать его (req/sec) нужно вручную — как разность кол-ва обработанных запросов в ед. времени.
      • UFO just landed and posted this here
          +1
          Могу посоветовать Вам этот сервис мониторинга серверов
          рассказывали о них, что сервисы работает на ура!

          watchdog.testip.ru
          host-tracker.com
          www.binokl.info/

          * Мониторинг нескольких серверов
          * Проверка DNS
          * Веб-мониторинг Http/Https
          * Мониторинг сервера отправки почты SMTP
          * Мониторинг сервера получения почты POP
          * Мониторинг сервера получения почты IMAP
          * Мониторинг файл-сервера FTP
          0
          На счет «заббикс и нагиос» отлично выполняют свои функции…
          Про точность это везде так бывает, в таких случая статистика не может быть точной на все 100%
          Так что кому что по душе тот себе и выбирает!
            +1
            там расхождение до 100% — куда уж больше?
          0
          Познавательное, искал что то подобное но не получилось с первого раза найти.
            +1
            Спасибо.

            Only users with full accounts can post comments. Log in, please.