Labutin
Новичок
Как узнать, какой запрос в настоящий момент выполняет php-cgi процесс?
Сервер функционирует по следующей схеме. Запущено 20 php-cgi процессов:
su -c "export PHP_FCGI_CHILDREN=20; export PHP_FCGI_MAX_REQUESTS=2000; /opt/php/bin/php-cgi --fpm" - nginx
nginx исполняет php скрипты обращаясь к этим процессам:
location ~ \.php$ {
root /opt/parts_nd;
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /opt/parts_nd$fastcgi_script_name;
fastcgi_read_timeout 300;
include fastcgi_params;
}
Все бы хорошо, но бывают случаи, когда ВСЕ 20 процессов чем-то надолго озадачиваются
При этом процессор не нагружен. И тогда nginx не может найти свободный php-cgi процесс для выполнения запросов.
Всякие отладки самих скриптов и дебажные печати не смогли выявить проблемные запросы к сайту, которые иногда приводят к слишком долгой обработке запросов.
Итак сам вопрос
Имеем 20 php-cgi процессов в памяти. Как понять, какие именно php скрипты они обрабатывают в текущий момент? Т.е. как только возникнет очередное подвисание, я хочу проанализировать, чем заняты процессы.
Наверное можно приаттачиться к процессу с помощью gdb. Но что дальше? Я в gdb в общем-то 0
Есть другие предложения?
Сервер функционирует по следующей схеме. Запущено 20 php-cgi процессов:
su -c "export PHP_FCGI_CHILDREN=20; export PHP_FCGI_MAX_REQUESTS=2000; /opt/php/bin/php-cgi --fpm" - nginx
nginx исполняет php скрипты обращаясь к этим процессам:
location ~ \.php$ {
root /opt/parts_nd;
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /opt/parts_nd$fastcgi_script_name;
fastcgi_read_timeout 300;
include fastcgi_params;
}
Все бы хорошо, но бывают случаи, когда ВСЕ 20 процессов чем-то надолго озадачиваются

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

Наверное можно приаттачиться к процессу с помощью gdb. Но что дальше? Я в gdb в общем-то 0

Есть другие предложения?