محبوبیت وب سرورهای آپاچی در جهان غیرقابل انکار است , مدیران سیستم به دلیل طراحی ماژولار آن را دوست دارند. علاوه بر این، آپاچی 2 ماژول های پردازش چندگانه یا MPM را معرفی کرده است که عملکرد اصلی وب سرور را تغییر می‌دهند.

MPM ها چیستند؟

این ماژول، یکی از ماژول‌های اصلی آپاچی است. MPM وظایف اصلی مهمی مانند ایجاد اتصالات شبکه (اتصال به پورت ها)، گوش دادن و پذیرش درخواست های مشتریان (مرورگرها) و ایجاد فرآیندهای فرزند یا رشته ها برای رسیدگی به درخواست ها را انجام می دهد. از آنجایی که این وظایف اصلی باید برای هر درخواست یکسان انجام شود، شما می توانید هر بار فقط یک MPM به کار گیری کنید.

 در پایان مرحله راه اندازی، پس از خواندن پیکربندی، کنترل کلی آپاچی به یک ماژول مدیریت فرآیند یعنی ماژول چند پردازشی منتقل می شود.

MPM یک رابط بین سرور آپاچی در حال اجرا و سیستم عامل اصلی است. نقش اصلی آن بهینه سازی آپاچی با توجه به پلتفرمی است که سرور در آن اجرا می شود. چندین نوع MPM وجود دارد که در این جا به معرفی و توضیح هر کدام از آن‌ها می پردازیم.

MPM Prefork

یک رشته مدل غیر گرا است که به شدت شبیه حالت عملکرد سرورهای آپاچی 1. x است. این بدان معناست که هر فرآیند آپاچی فرزند شامل یک رشته است و هر بار یک درخواست را مدیریت می کند. با توجه به این نوع ماهیت، منابع بیشتری نسبت به MPM های دیگر یعنی Worker و Event مصرف می کند.

[هشدار] توجه: Prefork MPM پیش‌فرض است، بنابراین اگر MPM تعیین نشده باشد، Prefork به‌طور پیش‌فرض انتخاب می‌شود. با این حال، در صورتی که آپاچی مجبور به استفاده از کتابخانه‌های غیرمستقیم موضوعی مانند mod_php (DSO) باشد، همچنان بهترین گزینه است و اگر جداسازی فرآیندها مهم است، انتخابی عالی است.

MPM Worker

این یک رشته یا نخ جهت‌دار است. انعطاف پذیری بیشتری دارد و خیلی بهتر با درخواست‌ها سازگار می شود. این نوع MPM به خصوص بهتر از مدل قبلی است، به خصوص در هنگام استفاده از برنامه های کاربردی خاص. Apache را به یک وب سرور چند پردازشی و چند رشته ای تبدیل می کند. برخلاف Prefork، در اینجا، فرآیند هر فرزند می تواند چندین رشته داشته باشد. این MPM می تواند درخواست های بیشتری را بدون مصرف منابع زیاد انجام دهد. بنابراین، به طور کلی برای سرورهای پرترافیک که نسخه های آپاچی قبل از 2.4 را اجرا می کنند، توصیه می شود. با این حال، به دلیل ناسازگاری با کتابخانه هایی که در هنگام استفاده از رشته‌ها غیر ایمن هستند، به اشکال بر می‌خورد. بنابراین اگر نیاز دارید چیزی را اجرا کنید که ایمن نیست، Prefork بهترین گزینه برای استفاده است.

Event MPM

در این MPM هر فرآیند می‌تواند شامل چندین رشته باشد، اما برخلاف Worker، هر یک در بیش از یک کار درگیر می‌شوند. علاوه بر این، آپاچی کمترین منابع مورد نیاز را در صورت استفاده تحت MPM Event دارد. با این حال، فقط در سرورهایی که روی Apache 2.4 اجرا می شوند پشتیبانی می شود. اگر Apache 2.2 باشد، این ماژول به صورت آزمایشی فراخوانی شده و ممکن است با برخی از ماژول‌های نسخه‌های قدیمی‌تر آپاچی ناسازگار است. از سوی دیگر، در سرورهای پرترافیک Apache 2.2 که Apache مشکلات حافظه دارد، ارتقای Apache برای بهره مندی از Event MPM می تواند نتایج قابل توجهی را به همراه داشته باشد.

MPM ITK

ماژول چند پردازشی که جزء آپاچی است که اتصالات همزمان را از نظر فرآیند یا رشته مدیریت می کند. استفاده از این رویکرد مزیتی را نسبت به Worker و Prefork MPM حفظ می‌کند زیرا یکی از محدودیت‌های MPM سنتی این است که از uid و gid یکسان استفاده می‌کنند که برای رسیدگی به پرس‌وجوها از همه میزبان‌ها (میزبان مجازی) تعریف شده‌اند.

در اینجا، MPM ITK امکان انتخاب یک uid متفاوت را فراهم می‌کند: gid برای یک میزبان مجازی (میزبان) بدون استفاده از CGI یا ماژول‌های suexec یا suphp، که برای محیط‌های میزبانی مشترک و همچنین در برخی موارد عملی بسیار راحت است. از جنبه امنیتی، این امکان را می دهد تا پیکربندی هر میزبان را مستقیماً در فایل پیکربندی آن جدا کنید. با این حال، محدودیت اصلی ITK عملکرد آن است، زیرا فرآیندی را برای هر پرس و جو ایجاد می کند و سپس از بین می برد، که عملکرد را به ویژه در مقایسه با Prefork یا Worker کاهش می دهد. اگرچه، ITK کارآمدتر از ماژول‌های suexec یا suphp باقی می‌ماند.

در پایان باید گفت اگر کارایی برای شما حیاتی است، پس بهتر است به MPM ای روی بیاورید که همین کار را با استفاده از نخ‌ها انجام می‌دهد، اما به زحمت بیشتری برای پیکربندی آن نسبت به راه‌حل Fast CGI نیاز است.

سایر MPM ها: MPM های آزمایشی دیگری نیز وجود دارند، اما توصیه می کنیم از آنها در محیط تولید استفاده نکنید. استفاده از آنها در یک محیط آزمایشی خوب است، زیرا آزمایشی هستند، به این معنی که هیچ تضمینی وجود ندارد که آنها مطابق انتظار عمل کنند.

برای اطلاعات بیشتر به دیگر پست‌های بلاگ آپ کدرز مراجعه کنید یا با برای هر گونه سوال با کارشناسان پشتیبانی ما تماس بگیرید.