Tutoriel Linux

Vmstat onder Linux: RAM-geheugen overbelast, CPU of schijf?

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Een server wordt trager, maar bovenkant geeft niet altijd aan dat een proces volledig geblokkeerd is. vmstatJe kunt binnen enkele seconden zien of de taken wachten op de processor, de schijf of het geheugen. Mits je natuurlijk geen conclusies trekt uit de eerste regel.

Ik begin altijd met een aantal monsters, en vervolgens vergelijk ik de tellers met elkaar. vrij, iostat en de processen. Dit is de enige manier om echte geheugendruk te onderscheiden van een overbelaste CPU of opslag die niet goed reageert.

Tux vergelijkt RAM, CPU en I/O om een ​​Linux-server te diagnosticeren.
Vmstat helpt onderscheid te maken tussen een CPU-wachtrij, geheugendruk en I/O-wacht.

Voer vmstat uit op meerdere samples.

vmstat hoort meestal in het pakket. Of procps-ngBegin met elke seconde een meting te verrichten, in totaal zes regels:

vmstat 1 6

De eerste regel vat de activiteit sinds het begin samen. Deze beschrijft niet precies de tweede regel die zojuist is verstreken. Om een ​​aanhoudende vertraging vast te stellen, concentreer u op het lezen van de volgende regels. De optie -w Verbreedt de kolommen als de waarden moeilijk leesbaar worden:

vmstat -w 1 6

Houd ook een tweede terminal open. Start het lezen, reproduceer de trage actie en noteer vervolgens de kolommen die tegelijkertijd veranderen. Een enkele piek tijdens een opslag- of compilatiebewerking weegt minder zwaar dan een wachtrij die gedurende meerdere minuten hoog blijft.

Lees de kolommen r, b en de CPU samen.

In de groep beproevingen, R

nproc
uptime

Als R blijft ruim boven het aantal beschikbare CPU’s en dat ons Of sy Als de waarden hoog zijn, heeft de machine waarschijnlijk te weinig processortijd. ons komt overeen met de code die in de gebruikersruimte wordt uitgevoerd, terwijl meet de werking van de kern. Een waarde sy Een ongebruikelijk hoge waarde kan het gevolg zijn van een groot aantal systeemoproepen, interrupties of contextwijzigingen.

De kolom B Dit omvat taken die vastzitten in een ononderbreekbare slaapstand, vaak in afwachting van invoer of uitvoer. B waControleer eerst de opslag voordat je de CPU de schuld geeft. Dit geeft de tijd aan waarin de processor inactief is terwijl een invoer-/uitvoerbewerking in behandeling is.

  • Identiteitskaart CPU-inactieve tijd;
  • wa
  • st : de tijd die de hypervisor nodig heeft op een virtuele machine.

Op een VPS, een st Herhaalde herhaling kan duiden op een overbelaste fysieke machine. Op een fysieke machine blijft deze kolom normaal gesproken op nul staan. De handleiding op de laadgemiddelde onder Linux Deze meting is compleet, omdat de belasting ook enkele geblokkeerde taken omvat en niet beperkt is tot een CPU-percentage.

Echte geheugendruk herkennen met behulp van de ‘als en alleen als’-methode.

De kolommen swpd vrij, bleek En verborgen Ze bieden een compact beeld van het geheugen. Ze zijn niet voldoende om verzadiging aan te geven. Linux hergebruikt een deel van het RAM-geheugen als cache, en vrij In vmstat vervangt de kolom niet beschikbaar van de bestelling vrij.

gratis -h
swapon-toon

swpd Geeft de hoeveelheid gebruikte swap aan. Een waarde die niet nul is, bewijst niet dat het systeem nog steeds pagina’s uitwisselt. Besteed hier bijzondere aandacht aan. als En Dus gebaseerd op recente monsters:

  • als : gegevens worden van het swapgeheugen naar het RAM-geheugen gelezen;
  • Gegevens verplaatst van RAM naar swap.

Herhaalde waarden in als Of Dus, een herinnering beschikbaar Een aanhoudend laag geheugen en verslechterde reactietijden vormen een sterk signaal van geheugenproblemen. Een oud, bezet swapgebied zonder actuele swapactiviteit is niet zo belangrijk. De handleiding over gratis en beschikbaar RAM beschrijft de rol van de cache in detail, terwijl het artikel over de wisselen onder Linux Dit legt uit waarom je het niet automatisch moet leegmaken.

Bevestig een schijfwacht met bi, bo en iostat.

In de sectie io, bi En bo Dit geeft het aantal ontvangen en verzonden blokken per seconde weer. Het toont de algehele activiteit, maar niet het verantwoordelijke apparaat of de reactietijd ervan. B En wa hoog blijven, overschakelen naar iostat :

iostat -xz 1 5

Kijk vooral wachten, de wachtrij en %gebruik voor elke schijf. Vertrouw niet op één enkele drempelwaarde: een NVMe SSD kan meerdere bewerkingen parallel uitvoeren, terwijl een harde schijf snel achteruitgaat bij willekeurige toegang. Vergelijk de waarden met het gebruikelijke gedrag van de machine en de huidige verwerking.

Het artikel over iostat onder Linux Hierin wordt uitgelegd hoe deze tellers op het juiste apparaat moeten worden aangesloten. Als de vertragingen gepaard gaan met fouten, controleer dan ook de kernelberichten:

journalctl -k -b -p warning..alert

Haal het proces op voordat u een service opnieuw start.

vmstat Geeft de waarschijnlijke aard van de blokkering aan, niet de procesnaam. Sorteer vervolgens de taken op basis van de vermoedelijke bron:

ps -eo pid,user,stat,ni,pcpu,pmem,comm --sort=-pcpu | head
ps -eo pid,user,stat,ni,pcpu,pmem,comm --sort=-pmem | head
htop

In , een staat D Dit komt over het algemeen overeen met ononderbroken slaap. Het kan een kolom verklaren. B De PID is hoog, maar beëindig het proces niet direct. Identificeer eerst de bijbehorende service, open de bestanden en bekijk de logbestanden:

ps -fp PID

journalctl -u service-concerne -n ​​100 --no-pager

Een database kan veel RAM-geheugen verbruiken zonder geheugenlekken, en een proces in een bepaalde toestand D Het systeem wacht mogelijk op een schijf of netwerkopslag. Een herstart maskeert soms het symptoom zonder het probleem op te lossen. Controleer de duur, de werkbelasting en eventuele fouten voordat u actie onderneemt.

De diagnose wordt bruikbaar wanneer meerdere kolommen hetzelfde verhaal vertellen:

  • : R blijft hoog vergeleken met nproc, met ons Of sy hoog en weinig Identiteitskaart ;
  • geheugen druk : beschikbaar blijf laag, Of Dus Bij meerdere samples wordt de respons geretourneerd en neemt de latentie toe;
  • B wa stijgen dan iostat bevestigt dat het apparaat traag is;
  • virtualisatie-conflict : st blijft zichtbaar op een virtuele machine ondanks een matige interne belasting.

Om een ​​OOM-killer-instantie te vinden, kunt u de kernel-logboeken raadplegen:

journalctl -k -b | grep -Ei 'out of memory|oom-killer|killed process'

Daar vmstat handleidingpagina beschrijft elk veld. Dat van iostat Details over opslagstatistieken. Houd uw metingen bij vóór en tijdens de vertraging: zonder vergelijking over tijd blijft zelfs een hoge waarde moeilijk te interpreteren.

sudo apt update && sudo apt upgrade