بهینه سازی عملکرد Apache2

بسیاری از مردم از apache2 به عنوان یک وب سرور استفاده می کنند. با این حال، تعداد کمی از مردم به بهینه سازی عملکرد آن فکر می کنند، که به طور مستقیم بر سرعت بارگذاری صفحات سایت، سرعت پردازش اسکریپت ها (به ویژه php) و همچنین افزایش بار CPU و افزایش مقدار RAM مورد استفاده تأثیر می گذارد.

بنابراین، راهنمای زیر باید به کاربران مبتدی (و نه تنها) کمک کند.
تمام مثال های زیر در Raspberry PI 3، Debian 9، Apache 2.4.38، PHP 7.3 استفاده شده است.

Итак، начнем.

1. غیرفعال کردن ماژول های استفاده نشده

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

لیست ماژول هایی که در حال حاضر استفاده می شوند را می توان با دستور زیر مشاهده کرد:

apache2ctl -M

برای غیرفعال کردن ماژول از دستور زیر استفاده کنید:

a2dismod *название модуля*

بر این اساس، برای فعال کردن ماژول، از دستور استفاده کنید:

a2enmod *название модуля*

لطفا توجه داشته باشید که هنگام استفاده a2dismod، نام ماژول باید بدون کلمه ماژول نوشته شود.

مثلا اگر در خروجی دستور هستید apache2ctl -M اره proxy_module، سپس برای غیرفعال کردن آن باید از دستور استفاده کنید - پروکسی a2dismod

ماژول هایی که سیستم را بیشتر بارگذاری می کنند (از تجربه شخصی) عبارتند از:

  • PHP، Ruby، Perl و ماژول های دیگر برای زبان های برنامه نویسی مختلف
  • SSL
  • باز نویسی
  • CGI

بنابراین در مواردی که به این ماژول ها نیاز ندارید، توصیه می کنم این ماژول ها را غیرفعال کنید.

همچنین، پس از غیرفعال کردن هر ماژول، توصیه می کنم از دستور - پیکربندی apache2ctlکه پیکربندی سایت های استفاده شده را بررسی می کند و اگر هر یک از ماژول های غیرفعال شده برای آنها ضروری بود، خطا ایجاد می کند.

2. تغییر MPM (ماژول چند پردازشی) و استفاده از php-fpm

به طور پیش فرض، پس از نصب، apache2 از MPM Prefork (1 رشته در هر 1 اتصال) استفاده می کند، که عملکرد را به طور قابل توجهی کاهش می دهد، اما در عین حال ثبات و امنیت را بهبود می بخشد.

اما برای بهینه‌سازی عملکرد، استفاده از MPM Worker را توصیه می‌کنم که به شما امکان می‌دهد از چندین رشته در هر اتصال استفاده کنید.

برای فعال کردن آن از دستورات زیر استفاده می کنیم:

a2dismod mpm_prefork  //Отключаем prefork
a2dismod php7.3  //Отключаем модуль php, который зависит от prefork
a2enmod mpm_worker  //Включаем worker

با این حال، هنگام استفاده از Worker ممکن است با مشکلی روبرو شوید زیرا ... ماژول php7.3 به ماژول Prefork بستگی دارد.

برای حل این مشکل، اجازه دهید ماژول php7.3-fpm را نصب کنیم، که برای اجرای اسکریپت های PHP استفاده می شود:

apt-get update && apt-get install php7.3-fpm  //Устанавливаем
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //Добавляем в автозагрузку и запускаем
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Включаем модуль и конфиг для него

شایان ذکر است که استفاده از php-fpm میزان RAM مورد استفاده در فرآیند apache2 را نیز کاهش می دهد و سرعت پردازش اسکریپت های PHP را اندکی افزایش می دهد.

3. نتیجه گیری

بنابراین، با چنین اقدامات ساده ای توانستیم عملکرد را بهینه کنیم و بار روی دستگاه را کاهش دهیم (در این مورد RPI3).

البته صدها گزینه بهینه سازی دیگر مانند فعال کردن فشرده سازی (که واقعا مفید است، اما اکثر آنها به طور پیش فرض فعال هستند)، تغییر تنظیمات MPM (فایل های پیکربندی)، غیرفعال کردن HostnameLookups و غیره وجود دارد، اما در این مقاله سعی کردم reflect اینها نکاتی هستند که بیشترین کمک را به من کردند و امیدوارم به دیگران کمک کنم.

منبع: www.habr.com

اضافه کردن نظر