Apache Prefork MPM در مقابل Apache Event MPM
Prefork MPM برای هر درخواست یک پروسه کاملاً جدا ایجاد میکند که پایدار ولی سنگین است و اغلب برای ماژولهای non-thread-safe مثل mod_php کلاسیک لازم است، در حالی که Event MPM از رشتهها (Thread) و مدل رویدادمحور برای مدیریت هزاران اتصال همزمان با مصرف حافظه بسیار کمتر استفاده میکند.
| ویژگی | Apache Prefork MPM | Apache Event MPM |
|---|---|---|
| مدل پردازش | یک پروسه بهازای هر درخواست | رشتههای رویدادمحور |
| مصرف حافظه | بالا | پایینتر |
| سازگاری با ماژولهای قدیمی | بالا | محدودتر |
کِی از Apache Prefork MPM استفاده کنیم؟
وقتی از ماژولهایی استفاده میکنید که Thread-safe نیستند یا نیاز به ایزولهسازی کامل بین درخواستها دارید.
کِی از Apache Event MPM استفاده کنیم؟
وقتی سرور باید ترافیک بالا و اتصالات همزمان زیاد (Keep-Alive) را با مصرف منابع کمتر مدیریت کند، مثلاً پشت یک CDN یا با PHP-FPM.
مثال Apache Prefork MPM
# فعالسازی Prefork MPM
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo systemctl restart apache2
مثال Apache Event MPM
# فعالسازی Event MPM
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
اشتباه رایج
اشتباه رایج نگهداشتن Prefork همراه با mod_php روی سروری با ترافیک بالاست؛ این ترکیب حافظه زیادی مصرف میکند، در حالی که سوییچ به Event MPM همراه با PHP-FPM عملکرد را بهشدت بهبود میدهد.
جمعبندی
برای سازگاری با ماژولهای قدیمی از Prefork و برای کارایی و مقیاس بالا با PHP-FPM از Event MPM استفاده کنید.
