Оптимизация на производителността на apache2

Много хора използват apache2 като уеб сървър. Въпреки това малко от тях се замислят за оптимизацията на неговата производителност, което има пряко влияние върху скоростта на зареждане на страниците на сайта, скоростта на обработка на скриптове (в частност php), а също така и на увеличената натовареност на ЦП и обема на използваната ОЗУ.

Следователно, следващият наръчник трябва да помогне на начинаещи (и не само) потребители.
Всички по-долу приведени примери са използвани на Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

И така, да започнем.

1. Изключване на неизползвани модули

Първият метод е простото изключване на модулите, които не използвате:

Списъкът на в момента използваните модули може да бъде видян с командата:

apache2ctl -M

За изключване на модул се използва командата:

a2dismod *име на модула*

Съответно за включване на модул се използва командата:

a2enmod *име на модула*

Обърнете внимание, че при използване на a2dismod, името на модула трябва да се пише без думата модул.

Например, ако в изхода на командата apache2ctl -M сте видели proxy_module, то за да го изключите, е необходимо да използвате командата — a2dismod proxy

Най-тежките за системата модули (по собствен опит) са:

  • PHP, Ruby, Perl и други модули за различни скриптови езици
  • SSL
  • Rewrite
  • CGI

Затова в случаите, когато тези модули не са ви нужни, препоръчвам да ги изключите.

Също така, след изключването на някой модул, препоръчвам да използвате командата — apache2ctl configtest, която ще провери конфигурацията на използваните сайтове и ако някой от изключените модули е необходим за тях, ще издаде грешка.

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 и т.н., но в тази статия се опитах да отразя именно онези точки, които най-много помогнаха на мен, и се надявам, че ще помогнат и на другите.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster