Estimate pm.max_children
ps -ylC php-fpm --no-headers | awk '{sum+=$8} END {print sum/NR/1024 " MB avg"}'
# Divide available RAM (minus OS+DB) by average size
Recommended dynamic settings
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
pm.process_idle_timeout = 10s
Slow log
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/www-slow.log
tail -f /var/log/php-fpm/www-slow.log
Status endpoint
pm.status_path = /fpm-status
location /fpm-status {
allow 127.0.0.1; deny all;
fastcgi_pass unix:/run/php-fpm/www.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}