بهینه سازی وب سرور آپاچی برای بازدهی بیشتر
هر چه وب سرور آپاچی شما بهتر و حرفه ای تر بهینه سازی شده باشد, بازدهی و کارکرد سایت های میزبانی شده بهتر و بیشتر خواهد بود؛ به ویژه اینکه سایت ها از نوع دینامیک باشند.
انتخاب MPM صحیح:
ماژول ها و افزونه های آپاچی به راحتی قابل حذف و اضافه هستند. ماژول های چند پردازشی یا Multi-Processing Modules که با اختصار MPM نامیده می شوند, این افزونه ها را جهت بکارگیری در هسته آپاچی برای مدیریت شبکه و توزیع درخواست ها به کار میگیرند. MPM به شما اجازه اجرای درخواست با موضوعات مختلف حتی با سیستم عامل های متفاوت را می دهد.
ماژول سنتی و قدیمی پردازش بر مبنای درخواست prefork نام دارد و نسل بعدی این ماژول worker نامیده میشود که در آن درخواست های متعدد با موضوعات مختلف برای بازدهی بیشتر و خرابی کمتر بکار بسته میشود. در آخرین مدل این روش که event نام دارد بسترهای (مانند حوضچه) جداگانه موضوعات مورد درخواست برای پردازش های جداگانه نگهداری می شود. برای اینکه بفهمید در حال حاضر وب سرور شما از چه نوع MPM پشتیبانی می کند دستور httpd -l را اجرا کنید.
انتخاب MPM صحیح به فاکتورهای زیادی بستگی دارد. بر اساس یک مثل قدیمی انگلیسی, شاید نخ کشی بهتر از انشعاب باشد! همه چیز به شما و نیازتان بستگی دارد. مثلاً اگر به دنبال اجرای ماژول ها و استفاده از کتابخانه (library) در PHP بصورت secure و امن هستید, حالت Prefork به شما توضیه می گردد. شاید نیاز باشد بصورت جداگانه هر یک از MPM ها را مورد بررسی و تست قرار دهید. همچنین در نظر داشته باشید نوع و مقدار منابع سخت افزار مورد استفاده نقش بسزایی در افزایش کیفیت و بازدهی وب سرور شما خواهد داشت.
- Worker MPM
استفاده همزمان از چندین child processes با فراوانی موضوعات مختلف که هر موضوع یک کانکشن ارتباطی را در لحظه مدیریت می کند. worker MPM برای سرورهایی که ترافیک بالایی دارند توصیه می شود, چون از حافظه (RAM) کمتری (footprint) در مقایسه با prefork MPM استفاده می کند. - Event MPM
بسیار شبیه به Worker MPM عمل می کند, اما بر این اساس تعریف شده که درخواست های شبیه سازی شده بیشتری توسط موضوعاتی که پشتیبانی میشود توسط آپاچی ارائه (serve) شود. در حقیقت موضوع مورد درخواست را بصورت تک پردازش مدیریت می کند. - Prefork MPM
برای هر موضوع از child processes زیادی استفاده می کند و در آن واحد هر پردازش یک کانکشن ارتباطی را مدیریت می کند. در بسیاری از سیستم ها prefork از worker سریعتر عمل کرده, ولی حافظه زیادی را مصرف می کند. از مزایای prefork نسبت به worker در موارد خاص می توان به امکان اجرای ماژول ها در حالت unsafe و debug راحت تر در پشتیبانی پلاتفرم های مختلف می توان اشاره کرد.
صرف نظر از انتخاب MPM صحیح, باید آنرا بطور مناسب و حرفه ای بهینه سازی کنید. به زبان ساده, پیکربندی MPM دستورات لازم را به آپاچی برای کارکرد صحیح پردازش ها می دهد.
از نسخه آپاچی ۲.۲ به بعد, Prefork به عنوان MPM پیش فرض ارائه میشود. بر اساس میزان اهمیت Prefork موارد مهمیکه در پیکربندی استفاده میشود به شرح زیر است:
Apache.conf:
برای شروع فایل پیکربندی آپاچی را پیدا کرده و در ویرایشگر باز کنید.
مسیر قرار گیری پیش فرض در کنترل پنل دایرکت ادمین (DirectAdmin):
/etc/httpd/conf/extra/httpd-mpm.conf
مسیر قرار گیری پیش فرض در کنترل پنل سیپنل (cPanel):
/usr/local/apache/conf/
مسیر قرار گیری پیش فرض در کنترل پنل پلسک (Plesk):
/etc/httpd/conf/
Timeout:
مقدار Timeout مربوط به فاصله زمانی بین ارسال و دریافت بر حسب ثانیه می باشد (از مبدا یا به مقصد کلاینت). انتخاب مقدار بالای Timeout می تواند به ایجاد صف انتظار و در نتیجه کندی یا کرش کردن وب سرور منجر شود. همچنین انتخاب کمتر از حد Timeout می تواند به بسته شدن درخواست ها قبل از پردازش کامل و نقص پاسخ دهی منجر شود.
مقدار مناسب Timeout بر اساس تجربه در سرور مجازی یا سرور اختصاصیبا ترافیک بالا ۱۰۰ و برای سرور اختصاصی با ترافیک معمولی ۳۰۰ در نظر گرفته میشود.
KeepAlive:
keepalive تدام ارتباط در وب سرور را مقدور می سازد. اگر سرور شما در یک سیکل سرویس دهی صدها IP مختلف سرویس دهی کند این گزینه را فعال و روشن کنید. اگر سرور شما از ترافیک بسیار بالایی برخوردار است یا از load balancing استفاده می کنید, باید این گزینه را برای افزایش توان عملیاتی خاموش نگه دارید.
نکته: اگر از کنترل پنل DirectAdmin استفاده می کنید تنظیمات این گزینه در مسیر زیر قابل تغییر است:
/etc/httpd/conf/extra/httpd-default.conf
MaxKeepAliveRequests:
مقدار این گزینه محدودیتی است که بر کانکشن مداوم در زمانی که keepalive روشن است قرار می دهیم. اگر این گزینه روی ۰ تنظیم شده باشد به معنای درخواست نامحدود است.
مقدار پیشنهادی برای سرور مجازی ۱۰۰ و برای سرور اختصاصی ۱۵۰ می باشد.