CodeShot

Apache Prefork MPM در مقابل Apache Event MPM

Prefork MPM برای هر درخواست یک پروسه کاملاً جدا ایجاد می‌کند که پایدار ولی سنگین است و اغلب برای ماژول‌های non-thread-safe مثل mod_php کلاسیک لازم است، در حالی که Event MPM از رشته‌ها (Thread) و مدل رویدادمحور برای مدیریت هزاران اتصال همزمان با مصرف حافظه بسیار کمتر استفاده می‌کند.

ویژگیApache Prefork MPMApache 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 استفاده کنید.