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