5 نکته برای افزایش سرعت وب سرور آپاچی

بر اساس گزارش اخیر Netcraft (یک شرکت اینترنتی مشهور که در میان خدمات دیگر سرویس های مرورگر وب خدمات فراهم می کند)، آپاچی همچنان به عنوان وب سرور به طور گسترده ای مورد استفاده قرار می گیرد در میان سایت ها و رایانه های اینترنتی.

علاوه بر این، آپاچی بزرگترین رشد را در میان سرورهای وب بالا تجربه می کند، به دنبال آنNginx و IIS . بنابراین، اگر شما یک مدیر سیستم مدیریت آپاچی هستید، باید بدانید که چگونه مطمئن شوید که وب سرور شما به بهترین وجه از نظر نیازهای شما (یا مشتری شما) انجام می شود.

5 نکته برای افزایش سرعت وب سرور آپاچی

5 نکته برای افزایش سرعت وب سرور آپاچی

در این مقاله ما چند نکته را ارائه خواهیم کرد که به شما کمک می کند اطمینان حاصل کنید که آپاچی به طور هماهنگ عمل می کند و قادر به پردازش درخواست های مورد انتظار از مشتریان از راه دور است.

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

1 – همیشه آپاچی را به آخرین نسخه خود ارتقا دهید

بدون شک می توان گفت که داشتن آخرین نسخه آپاچی، احتمالا یکی از اولین مواردی است که باید در نظر بگیرید. به عنوان 19 نوامبر 2015، آخرین نسخه از آپاچی موجود در لینوکس 7مخازن است 2.4.6 ، در حالی که در را دبیان است 2.4.10 .

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

در هر حال، شما می توانید نسخه نصب شده در حال حاضر خود را به صورت زیر بررسی کنید:

# httpd -v [در سیستم های مبتنی بر RedHat / CentOS]

# apache2 -v [در سیستم های مبتنی بر دبیان / اوبونتو]

 

5 نکته برای افزایش سرعت وب سرور آپاچی

5 نکته برای افزایش سرعت وب سرور آپاچی

به عنوان یک قاعده کلی، با استفاده از روش به روز رسانی ارائه شده توسط مدیر بسته از توزیع انتخابی شما ( yum update httpdیا aptitude safe-upgrade apache2، به ترتیب برای CentOS یا دبیان)، مگر اینکه راهی دیگر وجود داشته باشد. شما می توانید آخرین یادداشت های انتشار در بخش مستندات Apache در وب سایت پروژه سرور آپاچی HTTP را بخوانید .

2 – اگر شما از یک هسته قدیمی تر از 2.4 استفاده می کنید، در حال حاضر ارتقا را در نظر بگیرید

چرا؟ نسخه کرنل 2.4 و بالاتر سیستم تماس کرنل sendfile را به طور پیش فرض فعال کرده است. و این، به نوبه خود، تسهیل انتقال فایل شبکه با کارایی بالا (که در زمینه ارتباطات وب سرور-کلاینت مورد نظر) و قادر می سازد آپاچی برای ارائه محتوای استاتیک سریع تر و با استفاده از پردازنده کمتر با انجام به عنوان خوانده شده به طور همزمان و ارسال عملیات.

شما می توانید کرنل در حال حاضر نصب شده خود را با:

# uname -r

و مقایسه آن با آخرین هسته پایدار در www.kernel.org (4.3 در زمان نوشتن).

5 نکته برای افزایش سرعت وب سرور آپاچی

5 نکته برای افزایش سرعت وب سرور آپاچی

اگر چه این فرایند برای مبتدیان نیست، ارتقاء هسته شما یک تمرین جالب برای یادگیری بیشتر در مورد داخلی از لینوکس است.

اگر قصد خرید یک سرور مجازی بهینه و پرسرعت را دارید , سرور های مجازی قائم هاست با منابع اختصاصی از کشور های مختلف با نصب و کانفیگ رایگان و بهینه سازی حرفه ای بصورت تحویل آنی و سریع , پیشنهاد ویژه سرور مجازی ایران , سرور مجازی آلمان , سرور مجازی فرانسه و سرور مجازی کانادا می باشد.

3 – ماژول چند پردازشی (MPM) را که برای پرونده شما مناسب است، انتخاب کنید

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

آپاچی با نسخه 2.4، با توجه به نیازهای شما، سه MPM مختلف را انتخاب می کند:

  1. preforkMPM با استفاده از پروسه ی فرزند متعدد بدون نخ. هر فرایند یک اتصال را در یک زمان بدون ایجاد موضوعات جداگانه برای هر یک انجام می دهد. بدون در نظر گرفتن جزئیات بسیار، می توانیم بگوییم که شما می خواهید از این MPM فقط در هنگام اشکالزدایی یک برنامه کاربردی استفاده کنید، یا اگر برنامه شما نیاز به مقابله با، ماژول های غیر ایمن مانند mod_php داشته باشد.
  2. workerMPM چند موضوع در هر پروسه ی فرزند که در آن هر موضوع دسته یک اتصال در یک زمان استفاده می کند. این یک انتخاب خوب برای سرورهای ترافیک بالا است زیرا اجازه می دهد که اتصالات همزمان همزمان با RAM کمتری نسبت به موارد قبلی داشته باشند.
  3. در نهایت، eventMPM MPM به طور پیش فرض در بیشتر آپاچی برای نسخه 2.4 و بالاتر است. این همان کار MPM است که در آن پرونده های چندگانه را در هر فرایند فرزند ایجاد می کند، اما با یک مزیت: آن باعث می شود که KeepAlive یا اتصالات غیر فعال (در حالی که در آن حالت باقی می ماند) با یک موضوع واحد انجام شود، بنابراین حافظه آزاد می شود به موضوعات دیگر اختصاص داده شود. این MPM برای استفاده با ماژول های غیر ایمن مانند mod_php مناسب نیست ، بلکه باید جایگزینی چنین PHP-FPM را استفاده کرد.

برای بررسی MPM استفاده شده توسط نصب Apache شما می توانید انجام دهید:

# httpd -V

5 نکته برای افزایش سرعت وب سرور آپاچی

5 نکته برای افزایش سرعت وب سرور آپاچی

تصویر زیر نشان می دهد که این وب سرور خاص از MPM prefork استفاده می کند .

برای تغییر این، باید ویرایش کنید:

# /etc/httpd/conf.modules.d/00-mpm.conf [بر روی سیستم های مبتنی بر RedHat / CentOS]
# /etc/apache2/mods-available/<mpm>.load [در سیستم های مبتنی بر دبیان / اوبونتو]

<mpm> می تواند mpm_event ، mpm_worker ، یا mpm_prefork باشد.

و رونویسی خطی را که ماژول مورد نظر را بارگذاری می کند مانند:

ماژول LoadModule mpm_event_module / mod_mpm_event.so

توجه : برای ایجاد رویداد MPM در دبیان، ممکن است مجبور شوید بسته libapache2-mod-fastcgi را از مخازن غیر آزاد نصب کنید.

علاوه بر این، برای CentOS شما به php-fpm نیاز دارید (همراه با fcgi و mod_fcgid ) در حالی که در دبیان php5-fpm (همراه با apache2-mpm-event ) نامیده میشود.

آخرین، اما نه کمترین، سرور وب و سرویس جدید php-fpm (یا php5-fpm ) را دوباره راه اندازی کنید :

در RedHat / CentOS

# systemctl restart httpd php-fpm && systemctl فعال کردن httpd php-fpm

در دبیان / اوبونتو

# systemctl restart apache2 php5-fpm && systemctl enable apache2 php5-fpm

اگرچه شما می توانید Apache را برای استفاده از یک MPM ​​خاص تنظیم کنید، این پیکربندی را می توان بر اساس یک میزبان مجازی مجازی ، همان طور که قبلا نشان داده شد، لغو می کند.

فقط تگ های مربوطه را به فایل پیکربندی هر میزبان مجازی رها کنید و آماده باشید – اما مطمئن شوید که از یک و فقط یک MPM ​​در هر vhost استفاده می کنید.

در نهایت، لطفا توجه داشته باشید که صرف نظر از توزیع انتخاب شده شما، php-fpm به پیاده سازی FastCGI وابسته است ، چرا که من قبلا نصب نصب بسته های بیشتر را توصیه کردم.

برای جزئیات بیشتر و نمونه هایی در مورد php-fpm و نحوه ی آن با MPM رویداد می تواند عملکرد Apache را افزایش دهد، شما باید به اسناد رسمی مراجعه کنید .

این همان چیزی است که بعد از تغییر MPM پیش فرض از prefork به رویداد در همان کادر نمایش داده شده در تصویر قبلی دیده می شود:

5 نکته برای افزایش سرعت وب سرور آپاچی

5 نکته برای افزایش سرعت وب سرور آپاچی

 

در CentOS 7 ، باید اطمینان حاصل کنید که سرویس های http و https از طریق فایروال فعال هستند و رابط های شبکه به طور صحیح به منطقه پیش فرض اضافه می شوند.

مثلا:

# فایروال-cmd -zone = داخلی -add-interface = tun6to4 
# فایروال-cmd -zone = داخلی -add-interface = tun6to4 -permanent 
# firewall-cmd -set-default-zone = داخلی 
# firewall-cmd -add-service = http 
# firewall-cmd -add-service = https 
# firewall-cmd --add-service = http - persmanent 
# firewall-cmd -add-service = https - persistent 
# firewall-cmd - بارگیری

دلیل این که من این کار را انجام می دهم این است که من اخیرا یک مشکل را تجربه کردم که در آن تنظیمات پیکربندی پیش فرض فایروال در یک VPS ابر از php-fpm و Apache از پردازش فایل های php جلوگیری می کرد.

به عنوان یک تست اصلی (من مطمئن هستم که شما می توانید از پیچیده تر یا استرس فکر کنید)، من یک فایل پی اچ پی ایجاد می کنم که وجود یک فایل دیگر که test.phpدر همان دایرکتوری از دو سرور CentOS 7 با همان ویژگی های سخت افزاری و بارگذاری شده است را بررسی می کند با MPM متفاوت یکی از آنها از رویداد استفاده خواهد کرد و دیگری از پیشوند استفاده خواهد کرد:

5 نکته برای افزایش سرعت وب سرور آپاچی

5 نکته برای افزایش سرعت وب سرور آپاچی

 

این کد php است که من در فایل با نام ذخیره شده است checkiffileexists.php:

<؟ php
$ filename = 'test.php'؛
اگر (file_exists ($ filename)) {
echo "فایل $ نام فایل وجود دارد"؛
} else {
echo "فایل $ نام فایل وجود ندارد"؛
}
؟>

سپس با استفاده از 200 درخواست معین، با استفاده از معیار ارزیابی Apache (ab) تا 2000درخواست تکمیل می شود:

# ab -k -c 100 -n 2000 localhost / checkiffileexists.php

بیایید آزمایش را انجام دهیم و نتایج را مقایسه کنیم. توجه به آمار عملکرد:

 

5 نکته برای افزایش سرعت وب سرور آپاچی

5 نکته برای افزایش سرعت وب سرور آپاچی

 

همانطور که می بینید، عملکرد سرور با رویداد بسیار برتر از آن است prefork را همتای در هر جنبه ای از این آزمون است.

4 – را به صورت عادی برای Apache اختصاص دهید

شاید مهم ترین مورد سخت افزاری که باید در نظر گرفته شود مقدار رم برای هر پردازش آپاچی است. در حالی که شما نمی توانید این را به طور مستقیم کنترل کنید، می توانید تعداد فرآیندهای فرزند را از طریق دستور MaxRequestWorkers (که قبلا MaxClients در Apache 2.2 شناخته می شود ) محدود کرده باشید و محدودیت استفاده Apache از RAM را محدود می کند. باز هم می توانید این مقدار را در هر میزبان یا هر میزبان مجازی تنظیم کنید.

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

به عنوان مثال، بلوک زیر تعداد مشتریان همزمان به 30 را محدود می کند . اگر مشتریان بیشتر به میزبان حمله می کنند، ممکن است یک تاخیر یا یک خراب شدن لحظه ای را تجربه کنند که می تواند به راحتی با بازخوانی مرورگر حل شود. در حالی که این ممکن است نامطلوب در نظر گرفته شود، برای سرور و در دراز مدت، برای سایت شما نیز مناسبتر است.

شما می توانید این بلوک داخل /etc/httpd/conf/httpd.confو یا /etc/apache2/apache2.confبسته به اینکه آیا شما از CentOS یا دبیان استفاده می کنید.

لطفا توجه داشته باشید که همان اصل مربوط به همه MPM ها است – من از این رویداد برای ادامه مفهوم که در نوک قبلی وجود دارد استفاده می کنم:

<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 30
MaxConnectionsPerChild 1000
</ IfModule>

در هر حال، به شدت توصیه می شود که به Apache 2.4 docs مراجعه کنید تا ببینید کدام دستورالعمل برای MPM انتخاب شده شما مجاز است.

5 – برنامه های خود را بشناسید

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

شما می توانید ماژول های بارگذاری شده را با:

# httpd -M [بر روی سیستم های مبتنی بر RedHat / CentOS]
# apache2ctl -M [در سیستم های مبتنی بر دبیان / اوبونتو]

برای تخلیه / غیرفعال کردن ماژول ها در CentOS ، شما باید از خطی که از LoadModuleشروع می شود (یا در فایل پیکربندی اصلی و یا در یک کمکی در داخل/etc/httpd/conf.modules.d نظر دهید) .

از سوی دیگر، دبیان یک ابزار به نام a2dismod را برای غیر فعال کردن ماژول ها فراهم می کند و به صورت زیر استفاده می شود:

# a2dismod module_name

برای فعال کردن آن:

# a2enmod module_name

در هر صورت، به یاد داشته باشید آپاچی را مجددا راه اندازی کنید تا تغییرات اعمال شود.

خلاصه

در این مقاله 5 نکته را بررسی می کنیم که به شما کمک می کند تا وب سرور آپاچی را تنظیم و عملکرد آن را افزایش دهید. علاوه بر این، باید به یاد داشته باشید که بهینه سازی و عملکرد بدون امنیت بی فایده است، بنابراین ممکن است بخواهید به mod_pagespeed نصب مراجعه کنید تا عملکرد وبسایت را بهبود بخشید و مقاله نکات سخت افزاری Apache را نیز در Tecmint.com ببینید.

از آنجا که ما نمی توانیم تمام جنبه های این موضوع را در این مقاله به طور کامل پوشش دهیم، شاید شما از ایده های دیگر که مایل به اشتراک گذاری با سایر نقاط جامعه هستید، فکر کنید. در صورت تمایل، با استفاده از فرم نظرات زیر، ما را مطلع سازید.

5/5 - (1 امتیاز)