NGINX PHP-FPM – включение PHP server-status
В связке NGINX+PHP-FPM можно включить подробный вывод информации о выполняющихся скриптах PHP (для самого NGINX имеется другой модуль, в данном случае речь конкретно про PHP-FPM).
По-умолчанию он отключён, а пример и описание можно взять в файле
Настройки необходимо производить отдельно для каждого пула PHP-FPM.
Копируем строку pm.status_path = /status в файл пула, например — /etc/php5/fpm/pool.d/adminunix.ru.conf (или раскомментриуем, если уже есть), и перезапускаем службу:
# service php-fpm restart
Stopping php-fpm: [ OK ] Starting php-fpm: [ OK ]
Настраиваем NGINX, в котором добавляем:
location /status { auth_basic_user_file /usr/local/hosting/www/.htpasswd; auth_basic "Password-protected Area"; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_pass 127.0.0.1:9003; }
Если используется сокет, вместо TCP-порта – тогда последняя строка:
fastcgi_pass unix:/var/run/php-fpm.sock;
auth_basic нужна, что бы не давать всем подряд открывать страницу статуса.
Проверяем файл конфигурации и перезапускаем NGINX;
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
# service nginx restart
Stopping nginx: [ OK ] Starting nginx: [ OK ]
После чего – переходим на страницу статуса, где видим информацию:
pool: adminunix.ru process manager: dynamic start time: 04/Oct/2014:22:39:10 +0300 start since: 235 accepted conn: 331 listen queue: 0 max listen queue: 0 listen queue len: 128 idle processes: 2 active processes: 1 total processes: 3 max active processes: 2 max children reached: 0
pool – имя пула;
process manager – тип Process Manager (pm — dynamic, static, ondemand);
start time – время запуска FPM (FastCGI Process Manager);
start since – время в секундах с момента запуска;
accepted conn – количество обработанных пулом запросов;
listen queue – количество запросов в очереди на обработку этим пулом, если количество > 0 – надо подумать об увеличении количества процессов;
max listen queue – максимальное количество запросов, которые были в очереди с момента запуска пула;
listen queue len – количество запросов в очереди к сокету;
idle processes – количество процессов в idle статусе;
active processes – количество активных процессов;
total processes – общее количество процессов (idle + active processes);
max active processes – максимальное количество активных процессов с момента запуска пула;
max children reached – максимальное количество дочерних потоков PHP-FPM с момента запуска, если количество >0 – есть смысл подумать об увеличении pm.max_children;
slow requests – количество медленных запросов (должен быть включён slowlog).
По-умолчанию – status возвращает страницу в plain-text.
Что бы вызвать её в HTML – добавьте ?html:
http://adminunix.ru/status?html
Или в Json:
http://adminunix.ru/status?json
Для удобства парсинга данных, например скриптом на Python:
{"pool":"adminunix.ru","process manager":"dynamic","start time":1412451550,"start since":1219,"accepted conn":1685,"listen queue":0,"max listen queue":1,"listen queue len":128,"idle processes":0,"active processes":2,"total processes":2,"max active processes":3,"max children reached":0}
Что бы вывести больше информации – добавьте ?full:
http://adminunix.ru/status?full
pool: adminunix.ru process manager: dynamic start time: 03/Iul/2015:22:39:10 +0300 start since: 402 accepted conn: 571 listen queue: 0 max listen queue: 0 listen queue len: 128 idle processes: 0 active processes: 2 total processes: 2 max active processes: 2 max children reached: 0 ************************ pid: 8361 state: Running start time: 03/Iul/2015:22:45:26 +0300 start since: 36 requests: 23 request duration: 98 request method: GET request URI: /status?full content length: 0 user: setevoy script: - last request cpu: 0.00 last request memory: 0
Так же можно вызвать ?xml и комбинировать ?full с разными типами, например – ?json&full.