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 -MA 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
