Tips til toppen: Overvågning af CPU-belastning på Linux

Få en visning i realtid af de processer, der kører på Linux for at rette op på slowdowns og andre problemer.

Tips til toppen: Overvågning af CPU-belastning på Linux

Billede af:

opensource.com

Få nyhedsbrevet

Deltag i 85,000 open source advokater, der modtager vores giveaway alarmer og artikel roundups.

Denne artikel er uddrag fra kapitel 13 af bogen Linux i aktion, udgivet af Manning.

Har udførelsen af ​​din Linux-maskine været uregelmæssig eller usædvanlig langsom? Har du mistanke om, at stigende efterspørgsel måske overstiger dine tilgængelige ressourcer? Her er nogle spørgsmål, du burde spørge dig selv:

  • Hvor tæt er du på at udmande din CPU og hukommelsesressourcer?
  • Er der noget, der løber unødigt, der kunne lukkes?
  • Er der noget der har kørt rogue uden din viden?

Hvor skal du søge efter svar? Det top Programmet er et godt sted at starte. Det kan give dig et rigt, selvopdaterende overblik over de processer, der kører på dit system.

Figuren nedenfor viser en typisk skærm af top data. Den første linje giver den aktuelle tid, den forløbne tid siden den seneste systemstart, antallet af brugere, der er logget på og indlæs gennemsnit for sidste minut, fem minutter og 15 minutter. Disse oplysninger kan også returneres ved at køre oppetid.

top.png

Top

Et øjebliksbillede af procesdata, der vises af top.

Da vi forsøger at løse præstationsproblemer, skal de kolonner af data, der interesserer os mest, være % CPU (procentdel af CPU kapacitet, der aktuelt anvendes af en given proces) og % MEM (procentdel af hukommelseskapacitet). Du vil især gerne notere processerne, der vises øverst på listen.

I dette tilfælde kan du se, at MySQL-dæmonen bruger 4.3% af serverens CPU og i den næste kolonne 13% af hukommelsen. Hvis du følger denne række til venstre, kan du se, at proces-id'et (PID) er 1367 og processen er "ejet" af mysql bruger.

Måske vil du konkludere, at denne proces tog flere ressourcer, end det kan retfærdiggøres og skal ofres (for det større gode forstår du). At top Displayet gav dig alt, hvad du skal dræbe det. Da MySQL er en service, der forvaltes af systemd (på de distroser, der bruger systemd), skal dit første valg være at bruge systemctl at bringe processen forsigtigt ned uden at sætte nogen applikationsdata i fare.

systemctl stop mysqld

Hvis processen, du vil lukke, ikke styres af systemd, eller hvis noget er gået galt og systemctl undladt at stoppe det, så kan du bruge enten dræbe or Dræb alle at eliminere din proces. Nogle systemer kræver, at du installerer Dræb alle som en del af psmisc pakke. Du sender PID til dræbe denne måde:

dræb 1367

Dræb allepå den anden side bruger procesnavnet i stedet for dets ID.

killall mysqld

At dræbe eller at killall, det er spørgsmålet. Faktisk er svaret så indlysende. dræbe vil lukke en enkelt proces, baseret som den er på PID, mens Dræb alle vil dræbe så mange forekomster af et bestemt program som kører. Så hvis der var to eller tre separate MySQL-forekomster - måske tilhørende separate brugere - ville alle blive stoppet. Før lanceringen Dræb alle, sørg for, at der ikke er nogen tilsvarende navngivne processer, du stadig vil køre, der kunne blive "sikkerhedsskade".

Selvfølgelig skal du også løbe systemctl deaktivere for at sikre, at processen ikke genstarter næste gang du starter.

systemctl deaktiver mysqld

Dekryptere top

Hvis du nogensinde har brug for dem, den tredje linje af top output du så lidt tidligere giver os tidsværdier (som procentdele) for en række andre CPU-metrics. Her er et hurtigt overblik over de akronymer, du får se der:

metricBetydning
usTid kører højt prioriterede (ikke-oplyste) processer
syKørsel med kerneprocesser
niTid kører lavprioriterede (nice) processer
idTid brugt tomgang
waTiden venter på, at I / O-arrangementerne skal fuldføres
hiTid brugt til styring af hardwareafbrydelser
siTid brugt til at styre softwareafbrydelser
stTid stjålet fra denne VM af sin hypervisor (vært)

Den top displayet kan tilpasses i realtid gennem tastaturindgang. Type h at lære mere.

Gør problemer (simulerer CPU-belastning)

At dø for at se top i aktion, men ville du ikke vide det, går alt glat?

Hvorfor ikke simulere krise-niveau CPU overbelastning? Ligesom børn, Ja Udsender (digital) støj kontinuerligt, indtil den bliver fortalt at stoppe. På anden tanker er det slet ikke som børn.

Denne kommando vil omdirigere den pågældende lyd til engangsbrugsen / Dev / null fil og & tegn vil skubbe processen ind i baggrunden, hvilket giver kontrol af kommandolinjen tilbage til dig. For at hæve presset, start kommandoen et par gange mere.

$ ja> / dev / null &

Det burde holde dem optaget. Mens alt der kører, se top for at se, hvad der sker. Du kan også prøve at køre andre programmer for at se, hvor meget det vil tage for at bremse dem ned. Når du er færdig, kør Dræb alle at banke alle dine Ja sessioner på én gang.

$ killall ja

Kilde

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.