1. Tiltsa le az Apache modulokat
2. Állítsa be az mpm_prefork parancsot
3. Csökkentse a naplók számát
4. Fontolja meg a mod_php lecserélését
5. Fontolja meg az mpm_prefork lecserélését
Az Apache telepítése és inicializálása nagyon egyszerű, de számos előre telepített modullal érkezik, és ennek eredményeként teljesítményproblémák léphetnek fel, ha alacsony RAM-mal rendelkező VPS-en fut.
Tehát nincs mindig szükség nagyobb szerverre, hanem egyszerűen konfigurálhatja az Apache beállításait a megfelelő módon, és a lehető legjobb teljesítményt érheti el. Íme néhány dolog, amit meg kell tennie, hogy ezt elérje.
Ez az oktatóanyag az Ubuntu 14.04 LTS-hez készült, de az elvek hasonlóak a korábbi verziókhoz is.
1. Tiltsa le az Apache modulokat
Megtekintheti a paranccsal telepített ls /etc/apache2/mods-available/összes modult és az összes olyan modult, amely jelenleg aktív a paranccsal
ls /etc/apache2/mods-enabled/.
A kezdeti Apache telepítéskor 15 vagy több modul van alapértelmezés szerint engedélyezve. Ezek túl sok, és a legtöbbre nincs is szükség.
Mindenekelőtt listát kell készítenie az összes jelenleg aktív modulról, és el kell mentenie későbbi hivatkozás céljából arra az esetre, ha letilt valamit, ami szükséges, és újra engedélyeznie kell. Ezután egyszerűen tiltsa le a modulokat egyenként a paranccsal (például a moduleName használatával):
sudo a2dismod moduleName
... és minden változtatás után indítsa újra az Apache-t, hogy ellenőrizze, nincs-e hiba.
Néhány modul, amelyet le kell tiltania, ha nincs szüksége rájuk:
- PHP
- SSL
- Újraírni
- Perl
- Piton
Miután letiltott egy modult és újratöltötte az Apache konfigurációt, úgy ellenőrizheti a hibákat, hogy megnyitja az Apache hibanaplót egy szövegszerkesztővel, például a nanoval.
sudo nano /var/log/apache2/error.log
Ha hibaüzenetet kap, csak engedélyezze újra a megfelelő modult a következővel:
sudo a2enmod moduleName
Ezután indítsa újra az Apache-ot, amíg meg nem rendeződik a minimális lista!
2. Állítsa be az mpm_prefork parancsot
Az alapértelmezett Apache-konfigurációval (amely kis kiszolgálók számára nincs megfelelően kiegyensúlyozott) a memória gyorsan kimerülhet, és a felhőszerver túlterheltté válhat. Ez azt eredményezi, hogy a weboldal folyamatosan betöltődik. Valószínű, hogy a szerver aktívan tartja ezeket az elhalt Apache-folyamatokat, és szükségtelenül próbál meg tartalmat kiszolgálni, csökkentve a kiszolgálható folyamatok számát.
A probléma megoldásához először meg kell találnia, hogy mennyi RAM-ra van szüksége a kiszolgálónak az Apache-on kívül, és az Apache-folyamatok átlagos memóriamennyiségét.
Amíg az Apache fut, nyissa meg a top parancsot a kiszolgálón.
top -bn 1
Az eredménytáblázaton:
- Adja hozzá a RES oszlopban lévő számokat minden folyamathoz, kivéve az apache2-t , majd távolítsa el a RAM teljes mennyiségéből. Tegyük fel, hogy 600 MB-ot kap .
- lekérni az összes apache2 folyamat átlagát . Tegyük fel 20 MB-ot .
- akkor csak hajtsa végre a 600/20 = 30 maximum Apache folyamatot
A következő lépésben szerkessze az mpm_prefork modul konfigurációs fájlját:
sudo nano /etc/apache2/mods-enabled/mpm_prefork.conf
Így nézhet ki:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers 30
MaxConnectionsPerChild 0
</IfModule>
Ahol:
- StartServers: az indítandó szerverfolyamatok száma.
- MinSpareServers: a tartalék szerverfolyamatok minimális száma.
- MaxSpareServers: a tartalék szerverfolyamatok maximális száma.
- MaxRequestWorkers: az indítható szerverfolyamatok maximális száma.
- MaxConnectionsPerChild: a szerverfolyamat által kiszolgált kérések maximális száma.
A MaxRequestWorkers beállításban módosítania kell azt, amit a fenti felosztásban talált.
Most, ha a VPS túlterhelődik, és eléri az egyszerre kiszolgálható ügyfelek maximális számát, akkor ezeket ki fogja szolgálni, és a többi felhasználó egyszerűen meghibásodik. Ezután újratölthetik az oldalt, hogy újra próbálkozzanak. Sokkal jobb, ha ezek a kapcsolatok gyorsan bezáródnak, de a szervert egészséges állapotban hagyják, nem pedig örökké nyitva.
3. Csökkentse a naplók számát
A teljesítmény maximalizálása érdekében határozottan kevesebb információt naplózhat. Az alapértelmezett Apache konfigurációban a LogLevel beállítása warn . Ezt módosíthatja hibára , hogy csak a hibaüzenetek maradjanak meg.
Nyissa meg az Apache konfigurációs fájlt:
sudo nano /etc/apache2/apache2.conf
Keresse meg a sort:
LogLevel warn
... és módosítsa a következőre:
LogLevel error
Ezután mentse el a fájlt, és indítsa újra az Apache-t a következővel:
sudo service apache2 restart
Az Apache alapértelmezett fájlja a /var/log/apache2/error.log .
4. Fontolja meg a mod_php lecserélését
Ha PHP webhelyet futtat, nagy eséllyel a mod_php modult használja. Ez a modul azt eredményezheti, hogy minden Apache gyermekfolyamat több mint 100 MB RAM-ot használ, még akkor is, ha a kérések statikus erőforrásokra, például képekre, css-re és javascriptre vonatkoznak.
Kiváló alternatíva a php-fpm modul, amely egy különálló folyamat, amely a fastcgi protokollt használja. A php-fpm használatával az Apache folyamatok memóriája statikus tartalom esetén 10 MB-ra, dinamikus esetén pedig 60 MB-ra csökkenhet.
Noha ezzel a változtatással kissé nehézkes lehet a dolgokat működésre bírni, megéri az erőfeszítést.
5. Fontolja meg az mpm_prefork lecserélését
A legtöbb Apache konfiguráció az mpm_prefork modult használja, amely szálbiztos, és több gyermekfolyamatot használ egy-egy szálal, és mindegyik folyamat egyszerre egy kapcsolatot kezel. Ha nincs szüksége külső modulokra, például PHP-re vagy Railsre, akkor lecserélheti az apache2-mpm-worker modulra, amely gyakran gyorsabb. A Worker MPM több utódfolyamatot használ sok szállal, és mindegyik szál egyszerre egy kapcsolatot kezel.
A dolgozó modul engedélyezéséhez telepítenie kell.
sudo apt-get install apache2-mpm-worker
Ez a parancs eltávolítja az mpm_prefork , mos_php és más nem kompatibilis kiegészítő modulokat.