Optimizacija performansi Apache2

Mnogi ljudi koriste apache2 kao web server. Međutim, malo ljudi razmišlja o optimizaciji njegovih performansi, što direktno proporcionalno utječe na brzinu učitavanja stranica web stranice, brzinu obrade skripti (posebno php), kao i na povećanje opterećenja CPU-a i povećanje količine RAM-a koji se koristi.

Stoga bi sljedeći priručnik trebao pomoći početnicima (i ne samo) korisnicima.
Svi primjeri ispod korišteni su na Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Pa, hajde da započnemo.

1. Onemogućavanje nekorištenih modula

Prva metoda je jednostavno onemogućiti module koje ne koristite:

Spisak trenutno korišćenih modula može se pogledati naredbom:

apache2ctl -M

Da biste onemogućili modul, koristite naredbu:

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

U skladu s tim, da biste omogućili modul, koristite naredbu:

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

Imajte na umu da prilikom korištenja a2dismod, naziv modula mora biti napisan bez same riječi modul.

Na primjer, ako ste u izlazu naredbe apache2ctl -M pila proxy_module, zatim da biste ga onemogućili potrebno je koristiti naredbu - a2dismod proxy

Moduli koji najviše opterećuju sistem (iz ličnog iskustva) su:

  • PHP, Ruby, Perl i drugi moduli za različite skriptne jezike
  • SSL
  • prepisati
  • CGI

Stoga u slučajevima kada vam ovi moduli nisu potrebni, preporučujem da ih onemogućite.

Također, nakon što onemogućite bilo koji modul, preporučujem korištenje naredbe - apache2ctl configtest, koji će provjeriti konfiguraciju korištenih stranica i ako im je neki od onemogućenih modula bio neophodan, generiraće grešku.

2. Promjena MPM-a (Multi-Processing Module) i korištenje php-fpm-a

Po defaultu, nakon instalacije, apache2 koristi MPM Prefork (1 nit na 1 konekciju), što značajno smanjuje performanse, ali u isto vrijeme poboljšava stabilnost i sigurnost.

Ali da biste optimizirali performanse, preporučujem korištenje MPM Worker-a, koji vam omogućava korištenje više niti po vezi.

Da bismo to omogućili koristimo sljedeće naredbe:

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

Međutim, kada koristite Worker možete naići na problem jer... php7.3 modul zavisi od Prefork modula.

Da bismo riješili ovaj problem, instalirajmo php7.3-fpm modul, koji će se koristiti za pokretanje PHP skripti:

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  //Включаем модуль и конфиг для него

Vrijedi napomenuti da će korištenje php-fpm-a također smanjiti količinu RAM-a koju koristi proces apache2 i malo ubrzati obradu PHP skripti.

3. Zaključak

Tako smo uz ovako jednostavne radnje uspjeli optimizirati performanse i smanjiti opterećenje stroja (u ovom slučaju RPI3).

Naravno, postoje stotine drugih opcija optimizacije, poput omogućavanja kompresije (što je zaista korisno, ali većina je već uključena po defaultu), mijenjanja MPM postavki (konfiguracijskih datoteka), onemogućavanja HostnameLookups, itd., ali u ovom članku sam pokušao odražavaju Ovo su tačke koje su meni najviše pomogle, a nadam se da će pomoći i drugima.

izvor: www.habr.com

Dodajte komentar