Mijn server is traag geworden: zo controleer je RAM, CPU en schijf
Is je server trager geworden, kijk dan naar drie dingen: RAM, CPU en schijf. Maak verbinding en voer drie opdrachten uit: free -h voor geheugen, top voor de processor en df -h voor de schijf. Wat vol zit, is de bottleneck. Zien alle drie er goed uit, dan zit het probleem meestal in de applicatie zelf.
Begin met de load
De load average is het gemiddelde aantal processen dat op de CPU of de schijf wacht. De eerste drie getallen in de onderstaande uitvoer zijn de gemiddelden over de laatste 1, 5 en 15 minuten. Vergelijk ze met je aantal cores:
cat /proc/loadavg
nproc
Blijft de load lang boven het aantal cores, dan kan de server zijn werk niet bijhouden.
RAM: free -h
free -h
De belangrijkste kolom is available. Is die heel klein en loopt de rij Swap vol, dan heb je te weinig RAM. Raakt het geheugen op, dan stopt de kernel een van de processen die het meeste geheugen gebruiken (de OOM killer). Een database of webapplicatie die zichzelf sluit, wijst vaak hierop. Controleer het zo:
sudo dmesg -T | grep -i -E "out of memory|killed process"
CPU: top
top
Op het scherm dat opent sorteert de toets P processen op CPU-gebruik en de toets M op geheugengebruik. Druk op q om af te sluiten. Kijk in de CPU-regel bovenaan naar deze waarden:
- us: het aandeel van gebruikersprocessen. Is het hoog, dan eet een applicatie de CPU op.
- wa: tijd die wordt besteed aan wachten op schijfinvoer en -uitvoer. Is het hoog, dan is niet de CPU het probleem maar de schijf.
- st: "gestolen" tijd van de virtuele server, dus tijd die de virtualisatielaag de CPU aan iets anders gaf. Blijft het hoog, dan zit het probleem mogelijk niet in je server. Neem in dat geval contact op met support.
Schijf: df -h
df -h
df -i
De eerste opdracht toont de gebruikte ruimte en de tweede de limiet op het aantal bestanden (inodes). Is de schijf helemaal vol, dan kunnen databases en applicaties niet schrijven en wordt de server traag of geeft hij fouten. Zoek uit wat de ruimte inneemt:
sudo du -xh / --max-depth=1 2>/dev/null | sort -h | tail -n 8
Zijn de systeemlogs gegroeid, dan kun je ze verkleinen met sudo journalctl --vacuum-size=200M. Gebruik je Docker, dan toont docker system df de ruimte die images en containers innemen en docker stats --no-stream hoeveel CPU en geheugen elke container gebruikt.
Symptoom, waarschijnlijke oorzaak en oplossing
| Symptoom | Waarschijnlijke oorzaak | Wat je doet |
|---|---|---|
| Pagina's zijn af en toe traag, available is laag, swap zit vol | Te weinig RAM | Zet services uit die je niet nodig hebt en beperk de geheugeninstellingen van de applicatie (bijvoorbeeld het aantal PHP-FPM-workers of het databasegeheugen). Is dat niet genoeg, schaal de server dan op. |
Een service sluit zichzelf, "killed process" verschijnt in de uitvoer van dmesg | Het geheugen was op en de OOM killer greep in | Voeg RAM toe of verlaag het geheugengebruik. |
Eén proces in top houdt steeds een hele core volledig bezig | Een vastgelopen proces, een defecte plug-in of een lus | Zoek het proces op en repareer of schakel daarna de applicatie of plug-in erachter uit. |
| De load is hoog, de CPU is inactief, wa is hoog | Er wordt op de schijf gewacht (veel schrijfacties of swap) | Kijk naar de kolommen si en so in vmstat 1 5. Wordt swap gebruikt, voeg dan RAM toe. |
df -h of df -i zit vol | Geen schijfruimte of inodes meer | Ruim grote bestanden en logs op. Blijft het volstromen, schaal dan op. |
| st blijft hoog | Het probleem zit mogelijk buiten je server | Neem contact op met support. |
Bij Seturack is de schijfsnelheid van elke server begrensd: voortdurend 500 MB/s en 20.000 IOPS bij lezen, en 200 MB/s en 8.000 IOPS bij schrijven. Zitten je waarden in de uitvoer van iostat -x 1 5 op deze getallen, dan vertraagt de schijfbelasting je. Verminder het werk met caching of spreid het over de tijd. Ontbreekt iostat, installeer het dan met sudo apt install -y sysstat.
Wanneer helpt swap?
Swap gebruikt de schijf in plaats van RAM. Daarmee overleeft de server korte geheugenpieken zonder de OOM killer, maar het is niet zo snel als RAM. Blijven si en so in de uitvoer van vmstat 1 5 boven nul, dan schrijft de server voortdurend naar swap. De oplossing is RAM, niet swap. Heb je geen swap (swapon --show toont niets) en wil je pieken opvangen, dan kun je een swapbestand van 2 GB toevoegen. Deze opdrachten zijn voor een ext4-bestandssysteem:
sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile
sudo mkswap /swapfile && sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Als de resources er goed uitzien
Zien RAM, CPU en schijf er ruim uit, kijk dan naar de naam van het bovenste proces in top:
- Staat
php-fpm,apache2ofnginxbovenaan, dan ligt het probleem meestal bij de site zelf: een zware plug-in, ontbrekende caching of een plotselinge piek aan bezoekers. - Staat
mysqldofmariadbdbovenaan, dan zijn er trage query's. Zet het slow query log van de database aan en kijk welke query's lang duren. - Blijft een proces dat je niet herkent de CPU opeten, dan is de server mogelijk gehackt. Wijzig je wachtwoorden, controleer open sessies en de uitvoer van
sudo ss -tulpnen installeer de server zo nodig opnieuw met een schoon systeem.
Wanneer opschalen
De volgorde is: eerst afstemmen, dan caching toevoegen, onnodig werk uitzetten. Is de load daarna nog steeds hoog, schaal de server dan op. Open in het paneel het tabblad Grootte van je server, zet de schuifregelaars op de nieuwe grootte en bevestig. Na betaling herstart de server één keer vanzelf en komt hij terug op de nieuwe grootte. Je IP-adres en gegevens blijven hetzelfde en je betaalt alleen het verschil voor de resterende dagen. Je kunt RAM, vCores en schijf apart laten groeien, zodat je alleen verhoogt wat tekortschiet. Opschalen laat de schijf groeien, terwijl afschalen hem niet verkleint. Zie voor details het artikel over schalen.
Reageert de server door de belasting helemaal niet meer, dan kan SSH mogelijk niet verbinden. Open in dat geval de VNC-console vanuit het paneel, of herstart de server vanuit het paneel.
Reacties0
Nog geen reacties
Deel als eerste uw gedachten.
Meld u aan of registreer u om een reactie te plaatsen.