Introduction
PHP-FPM (FastCGI Process Manager) is a PHP handler optimized for performance. It’s the default for most modern WordPress hosting environments. Configuring it properly ensures your site can handle traffic spikes while using memory efficiently.
Key Configuration Settings
1. Process Manager (pm)
Choose between:
static
: Fixed number of child processes.dynamic
: Scales with traffic.ondemand
: Starts processes as needed (saves resources).
For most WordPress sites, dynamic
is the best option.
2. pm.max_children
Controls the maximum number of simultaneous PHP processes.
- Formula:
Total RAM / Average memory per PHP process
. - Example: 2 GB RAM / 50 MB = 40 max children.
3. pm.start_servers / pm.min_spare_servers
Set these based on expected traffic. For small sites:
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
4. php.ini Tweaks
memory_limit = 256M
max_execution_time = 60
upload_max_filesize = 64M
- Enable OPcache:
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
Monitoring & Optimization
- Use
htop
ortop
to monitor usage. - Check error logs for warnings.
- Benchmark with ApacheBench or Loader.io.
Final Thoughts
Optimizing PHP-FPM can give your WordPress site a noticeable speed boost, especially under load. Tweak conservatively, monitor performance, and adjust based on real-world usage.