Optimizacija performansi Apache2

Mnogi ljudi koriste apache2 kao web poslužitelj. Međutim, malo ljudi razmišlja o optimizaciji njegove izvedbe, što izravno proporcionalno utječe na brzinu učitavanja stranica web-mjesta, brzinu obrade skripti (osobito php), kao i povećanje opterećenja CPU-a i povećanje količine korištene RAM-a.

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

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

1. Onemogućavanje neiskorištenih modula

Prva metoda je da jednostavno onemogućite module koje ne koristite:

Popis trenutno korištenih modula možete pogledati naredbom:

apache2ctl -M

Da biste onemogućili modul, koristite naredbu:

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

Sukladno tome, 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, a zatim da biste ga onemogućili morate upotrijebiti naredbu - a2dismod proxy

Moduli koji najviše opterećuju sustav (iz osobnog iskustva) su:

  • PHP, Ruby, Perl i drugi moduli za razne skriptne jezike
  • SSL
  • Prepisati
  • CGI

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

Također, nakon onemogućavanja bilo kojeg modula, preporučujem korištenje naredbe - apache2ctl configtest, koji će provjeriti konfiguraciju korištenih stranica i ako je neki od onemogućenih modula bio neophodan za njih, generirati će pogrešku.

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

Prema zadanim postavkama, nakon instalacije, apache2 koristi MPM Prefork (1 nit po 1 vezi), što značajno smanjuje performanse, ali u isto vrijeme poboljšava stabilnost i sigurnost.

Ali za optimizaciju performansi, preporučujem korištenje MPM Worker-a, koji vam omogućuje korištenje više niti po vezi.

Da bismo ga 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... Modul php7.3 ovisi o modulu Prefork.

Da riješimo ovaj problem, instalirajmo modul php7.3-fpm 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  //Включаем модуль и конфиг для него

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

3. zaključak

Stoga smo tako jednostavnim radnjama uspjeli optimizirati performanse i smanjiti opterećenje stroja (u ovom slučaju RPI3).

Naravno, postoje stotine drugih opcija optimizacije, poput omogućavanja kompresije (koja je stvarno korisna, ali većina je već omogućena prema zadanim postavkama), mijenjanje MPM postavki (konfiguracijske datoteke), onemogućavanje HostnameLookups, itd., ali u ovom sam članku pokušao refleksije Ovo su točke koje su meni najviše pomogle, a nadam se da će pomoći i drugima.

Izvor: www.habr.com

Dodajte komentar