Apache2 teljesítményoptimalizálása

Sokan apache2-t használnak webszerverként. Azonban kevesen gondolkodnak a teljesítmény optimalizálásán, ami közvetlen hatással van a weboldalak betöltési sebességére, a szkriptek (különösen a PHP) feldolgozási sebességére, valamint a CPU leterheltségére és az elérhető RAM mennyiségére.

Ezért a következő útmutatónak segítenie kell a kezdő (és nem csak) felhasználókat.
Az alábbi példák Raspberry PI 3-on, Debian 9-en, Apache 2.4.38-on és PHP 7.3-on készültek.

Ezt tehát kezdjük el.

1. Nem használt modulok letiltása

Az első módszer a nem használt modulok banális letiltása:

A jelenleg használt modulok listáját az alábbi paranccsal tekintheti meg:

apache2ctl -M

A modul letiltásához az alábbi parancsot használjuk:

a2dismod *modul neve*

A modul engedélyezéséhez az alábbi parancsot használjuk:

a2enmod *modul neve*

Kérjük, vegye figyelembe, hogy az a2dismodparancs használatakor a modul nevét önállóan kell megadni, anélkül, hogy a 'modul' szót használnánk.

Például, ha a parancs kimenetében a apache2ctl -M proxy_module szót látta, akkor annak letiltásához az alábbi parancsot kell használni:a2dismod proxy A legjobban leterhelő modulok (saját tapasztalat alapján) a következők:

PHP, Ruby, Perl és egyéb modulok különböző szkriptnyelvekhez

  • Rewrite
  • SSL
  • CGI
  • Tehát azokban az esetekben, amikor ezek a modulok nem szükségesek, ajánlom, hogy tiltsa le őket.

Ezenkívül, miután bármelyik modult letiltottuk, ajánlom, hogy használja a következő parancsot:

apache2ctl configtest , amely ellenőrzi a használt webhelyek konfigurációját, és ha bármelyik letiltott modul szükséges volt számukra, hibát jelez.2. MPM (Multi-Processing Module) váltás és php-fpm használat

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

Azonban a teljesítmény optimalizálása érdekében javaslom az MPM Worker használatát, amely lehetővé teszi, hogy egyszerre több szálat használjon egy kapcsolatra.

Ennek engedélyezéséhez az alábbi parancsokat használjuk:

a2dismod mpm_prefork \/\/ Felfüggesztjük a prefork-ot a2dismod php7.3 \/\/ Felfüggesztjük a prefork-tól függő PHP modult a2enmod mpm_worker \/\/ Engedélyezzük a workert

Azonban a Worker használata során előfordulhat, hogy problémával szembesül, mivel a php7.3 modul a Prefork modultól függ.

A Worker használata során azonban problémával szembesülhet, mivel a php7.3 modul a Prefork modultól függ.

A probléma megoldásához telepítjük a php7.3-fpm modult, amelyet a php-szkriptek végrehajtásához fogunk használni:

apt-get update && apt-get install php7.3-fpm  // Telepítés
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  // Automatikus indításra állítjuk és elindítjuk
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  // Engedélyezzük a modult és a konfigurációt

Érdemes megemlíteni, hogy a php-fpm használata csökkenti az apache2 által használt memória mennyiségét, és valamivel felgyorsítja a php-szkriptek végrehajtását.

3. Következtetés

Így ezzel az egyszerű lépésekkel sikerült optimalizálnunk a teljesítményt és csökkenteni a terhelést a gépen (jelen esetben RPI3).

Természetesen sok más optimalizációs lehetőség is létezik, például a tömörítés engedélyezése (amely valóban hasznos, de a legtöbb esetben már alapértelmezés szerint be van kapcsolva), a MPM konfigurációs fájlainak paramétereinek módosítása, a HostnameLookups letiltása stb., de ebben a cikkben igyekeztem hangsúlyozni azokat a pontokat, amelyek a legnagyobb segítséget nyújtották számomra, és remélem, hogy másoknak is hasznosak lesznek.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster