Часто возникает необходимость отслеживать нагрузку, создаваемую работой PHP-сценариев на сервере, а также использование ими ресурсов. Это особенно важно для оценки текущих ограничений при оптимизации параметров сервера и выборе направлений дальнейшего масштабирования.
Одно из существующих решений для этих целей известно как PINBA. Оригинальный PINBA представляет собой расширение PHP (php-pinba) и плагин к MySQL (pinba-engine). По завершении выполнения сценария php-pinba отправляет статистические данные pinba-engine, который в свою очередь, собирает информацию о работе сценариев. Потом эта информация может быть считана для анализа из временных таблиц в MySQL. Данное решение не полное, нужны средства для хранения и отображения в удобной форме собранной информации. Также для работы необходима MySQL версии не ниже 5.1 (поскольку поддержка плагинов появилась в 5.1).
Мы уже писали про легковесную систему сбора статистики Collectd. Недавно вышел первый альфа релиз collectd-pinba плагина к Collectd (проект живёт по адресу http://sourceforge.net/projects/collectd-pinba). Разработка основана на коде оригинального pinba-engine. Первоначально collectd-pinba разрабатывался как посредник между collectd и pinba-engine, но впоследствии стал представлять из себя замену pinba-engine. Таким образом, из проекта PINBA для полноценной работы необходимо только расширение к PHP.
На данный момент плагин собирает следующую информацию:
- Число запросов в секунду
- Время выполнения запросов
- Использование ресурсов в пользовательском режиме
- Использование ресурсов в системном режиме
- Используемая скриптами память
- Размер генерируемых скриптами данных
По умолчанию плагин всегда мониторит общую статистику работы всех скриптов, но есть возможность разделять информацию по имени хоста, серверу и скрипту путём добавления в конфигурацию соответствующих опций. Стоит заметить, что в текущем версии не реализована работа с pinba таймерами, что намечается в будущем.
Автор рассчитывает на сотрудничество со всеми, кого заинтересовала данная разработка. Отчеты по тестам, замечания, предложения, багрепорты всячески приветствуются.