PHP-FPM Pool Architecture Checklist for WordPress VPS
PHP-FPM processes PHP requests for WordPress and other PHP apps. A pool defines which user runs PHP, how requests are accepted, how many workers can run and how logs are written.
Core principle
PHP-FPM is the bridge between Nginx and PHP application code. Nginx forwards PHP requests to a pool, and the pool executes PHP under a specific user with resource limits.
Checklist
- Identify the PHP version used by the site.
- Find the active PHP-FPM pool file.
- Check pool user and group.
- Check listen socket or TCP address.
- Check process manager mode.
- Check max children setting.
- Check request timeout and slowlog options.
- Check PHP-FPM status.
- Check pool error logs.
- Document which site uses which pool.
Reusable lesson
This applies to WordPress, WooCommerce, custom PHP apps, multi-site VPS hosting, PHP migrations and performance tuning.
When to Use This Checklist
Use this checklist when learning or debugging how PHP-FPM serves WordPress and PHP applications behind Nginx.
Required Tools
SSH access, PHP-FPM config, Nginx config, PHP version, service logs, website root path
Before You Start
Do not tune PHP-FPM workers before identifying the active pool and available server memory.
Structured Checklist Steps
- Identify PHP version.
- Find pool file.
- Check user and group.
- Check listen target.
- Check process manager.
- Check max children.
- Check timeout settings.
- Check service status.
- Read logs.
- Map site to pool.
Verification Steps
- Active PHP version is known.
- Pool listen target matches Nginx.
- Pool user has correct file access.
- Worker limits are understood.
- PHP-FPM status is healthy.
Rollback Plan
If pool changes break PHP, restore the previous pool file, test PHP-FPM config and restart only PHP-FPM after validation.
Common Mistakes
- Editing the wrong PHP version.
- Wrong pool user.
- Nginx socket mismatch.
- Too many workers for small RAM.
- No slowlog for performance diagnosis.
Related Commands
php -v
ls -la /etc/php/*/fpm/pool.d/
grep -R "listen =" /etc/php/*/fpm/pool.d/
sudo systemctl status php8.2-fpm
sudo php-fpm8.2 -t
sudo systemctl restart php8.2-fpm