Apache2 teljesítményoptimalizálás

Sokan az apache2-t használják webszerverként. Kevesen gondolnak azonban teljesítményének optimalizálására, ami közvetlenül arányosan befolyásolja a webhely oldalainak betöltési sebességét, a szkriptek (különösen a php) feldolgozásának sebességét, valamint a CPU terhelés növekedését és a felhasznált RAM mennyiségének növekedését.

Így a következő kézikönyvnek segítenie kell a kezdő (és nem csak) felhasználóknak.
Az alábbi példák mindegyike Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3 rendszereken történt.

Szóval, kezdjük el.

1. A nem használt modulok letiltása

Az első módszer az, hogy egyszerűen letiltja azokat a modulokat, amelyeket nem használ:

A jelenleg használt modulok listája a következő paranccsal tekinthető meg:

apache2ctl -M

A modul letiltásához használja a következő parancsot:

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

Ennek megfelelően a modul engedélyezéséhez használja a következő parancsot:

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

Kérjük, vegye figyelembe, hogy használat közben a2dismod, a modul nevét a modul szó nélkül kell írni.

Például, ha a parancs kimenetében van apache2ctl -M Láthattuk proxy_module, majd a letiltásához a - parancsot kell használnia a2dismod proxy

A rendszert leginkább terhelő modulok (személyes tapasztalat alapján):

  • PHP, Ruby, Perl és egyéb modulok különféle szkriptnyelvekhez
  • SSL
  • átír
  • CGI

Tehát azokban az esetekben, amikor nincs szüksége ezekre a modulokra, azt javaslom, hogy tiltsa le ezeket a modulokat.

Ezenkívül bármely modul letiltása után javaslom a - parancs használatát - apache2ctl configtest, amely ellenőrzi a használt oldalak konfigurációját, és ha valamelyik letiltott modul szükséges volt hozzájuk, akkor hibát generál.

2. MPM (Multi-Processing Module) módosítása és php-fpm használata

Alapértelmezés szerint a telepítés után az apache2 az MPM Prefork-ot használja (1 kapcsolatonként 1 szál), ami jelentősen csökkenti a teljesítményt, ugyanakkor javítja a stabilitást és a biztonságot.

A teljesítmény optimalizálása érdekében azonban az MPM Worker használatát javaslom, amely lehetővé teszi több szál használatát kapcsolatonként.

Ennek engedélyezéséhez a következő parancsokat használjuk:

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

A Worker használatakor azonban problémákba ütközhet, mert... A php7.3 modul a Prefork modultól függ.

A probléma megoldásához telepítsük a php7.3-fpm modult, amely PHP szkriptek futtatására szolgál:

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

Érdemes megjegyezni, hogy a php-fpm használata csökkenti az apache2 folyamat által használt RAM mennyiségét, és kissé felgyorsítja a PHP szkriptek feldolgozását.

3. következtetés

Így ilyen egyszerű műveletekkel optimalizálni tudtuk a teljesítményt és csökkenteni tudtuk a gép terhelését (jelen esetben RPI3).

Természetesen több száz egyéb optimalizálási lehetőség is létezik, mint például a tömörítés engedélyezése (ami nagyon hasznos, de a legtöbb már alapértelmezés szerint engedélyezve van), az MPM beállítások módosítása (konfigurációs fájlok), a HostnameLookups letiltása stb., de ebben a cikkben megpróbáltam tükrözik Ezek azok a pontok, amelyek a legtöbbet segítettek nekem, és remélem, másoknak is.

Forrás: will.com

Hozzászólás