The “best” MPM changed once PHP-FPM became standard. With mod_php, prefork was the default; with PHP-FPM, event is usually the better default for concurrency. This guide explains why.
The core constraint
- mod_php is not compatible with Apache’s threaded MPMs (worker/event).
- That’s why prefork was historically the default in many WordPress setups.
Quick comparison
| MPM | Best with | Pros | Cons | When to choose |
|---|---|---|---|---|
| prefork | mod_php | Simple model | Higher memory | Legacy mod_php stacks |
| event | PHP-FPM | Better concurrency | More moving parts | Most modern WordPress stacks |
Rule of thumb
- Using mod_php → prefork
- Using PHP-FPM → event is usually the better default
FAQ
How do I check which MPM I’m using?
Run apache2ctl -V and look at Server MPM. On Debian/Ubuntu you may need to enable the desired MPM module and restart Apache.
If I switch MPM, what do I need to do?
Enable the new MPM, disable the old one, run apachectl configtest, then restart Apache. See Apache graceful reload vs restart for reload vs full restart.
Related
- Apache + PHP-FPM stability basics — PHP-FPM wiring
- Apache graceful reload vs restart — applying config changes