Nachfolgend ein paar Befehle und Möglichkeiten zum analysieren des CPU und Disk Load unter Debian. Vorausgegangen ist bei mir ein System, dass auf einmal einen deutlichen Ansprung an CPU Load hatte.
Uptime – Befehl
# uptime
15:16:19 up 6 days, 5:34, 1 user, load average: 0,17, 0,46, 0,49
Ein kurzer Blick mittels # uptime, zeigt den Treind in der letzten Minute, den letzten 5 und 15 Minuten im Durchschnitt. Damit lässt sich kurz ein Gefühl dafür bekommen, ob hier etwas evtl. aus dem „normalen“ Bereich läuft.
Dmesg – Befehl
MIttels # dmesg Log kann schnell erkannt werden, ob ein Hardwarefehler wie ein defekter Arbeitsspeicher z.B. vorliegt.
Vmstat – Befehl
Als nächstes schaue ich mittels # vmstat 1 nach der aktuellen Serverperformance. In der ersten Zeile steht die durschnittliche Performance seit dem letzten Neustart.
# vmstat 1
procs | ———–memory———- | —swap– | —–io—- | -system– | ——cpu—– | |||||||||||
r | b | swpd | free | buff | cache | si | so | bi | bo | in | cs | us | sy | id | wa | st |
0 | 0 | 212180 | 359800 | 367528 | 3528312 | 0 | 1 | 807 | 1053 | 28 | 35 | 14 | 1 | 73 | 12 | 0 |
0 | 2 | 212180 | 355148 | 367528 | 3528320 | 0 | 0 | 0 | 1112 | 474 | 3978 | 32 | 3 | 20 | 44 | 0 |
0 | 1 | 212180 | 322788 | 367528 | 3540328 | 0 | 0 | 0 | 244 | 344 | 868 | 9 | 3 | 0 | 88 | 0 |
1 | 0 | 212180 | 319712 | 367528 | 3541512 | 0 | 0 | 32 | 876 | 334 | 6687 | 53 | 2 | 7 | 38 | 0 |
0 | 0 | 212180 | 319816 | 367528 | 3541540 | 0 | 0 | 16 | 320 | 186 | 346 | 18 | 2 | 76 | 4 | 0 |
0 | 0 | 212180 | 320860 | 367528 | 3541540 | 0 | 0 | 0 | 40 | 95 | 187 | 0 | 1 | 87 | 12 | 0 |
2 | 0 | 212180 | 301408 | 367528 | 3559052 | 0 | 0 | 0 | 1888 | 295 | 922 | 43 | 3 | 10 | 45 | 0 |
0 | 1 | 212180 | 162148 | 367528 | 3643520 | 0 | 0 | 0 | 196 | 289 | 859 | 89 | 9 | 0 | 2 | 0 |
2 | 0 | 212180 | 144572 | 367528 | 3653656 | 0 | 0 | 272 | 440 | 569 | 1336 | 47 | 7 | 15 | 30 | 0 |
0 | 0 | 212180 | 135056 | 367528 | 3659564 | 0 | 0 | 0 | 588 | 348 | 1093 | 43 | 3 | 15 | 38 | 0 |
- Spalte „wa“ im Abschnitt CPU
- diese gibt die Zeit an die die CPU auf IO wartet, ein hoher Wert zeigt starke Aktivität auf der Festplatte an
- wenn „wa“ hoch ist, dann geht der Blick in den Abschnitt „swap“ und dort auf „si“ und „so“
- wenn diese Werte größe Null sind, dann bedeutet dies, dass kein Arbeitsspeicher mehr zur Verfügung steht und ausgelagert werden muss
- da der Arbeitsspeicher wesentlich schneller als die Disk ist, kann dies zu einer Verzögerung bei z.B. den HTTP-Diensten führen
- nun schau ich wieder im Abschnitt CPU auf die Spale „id“, die die Zeit angibt die die CPU beschäftigt ist
- ist der Wert bei ca. Null, bedeutet das, dass die CPU stark beansprucht wird und der Blick geht nach „sy“ und „us“ was anzeigt ob der Kernel beschäftigt ist oder der nicht Kernelcode, also die Applikationen
- wenn „sy“ hoch ist, deutet das auf viel Tätigkeit in den Dateiverzeichnissen wie E-Mail z.B. bei der SPAM Erkennung hin
- wenn „us“ hoch ist, dann kann als nächstes mit den nächsten Tools nach dem Prozess und der Anwendung geschaut werden, die diese CPU-Last erzeugen
PS Befehl – zeige Prozesse nach CPU Nutzung, sortiert mit dem höchsten zu erst und davon die ersten 6 Zeilen
# ps -Ao user,uid,comm,pid,pcpu,tty –sort=-pcpu | head -n 6
USER UID COMMAND PID %CPU TT
mysql 110 mysqld 949 8.9 ?
web20 5015 php-cgi 15587 2.3 ?
dovenull 113 imap-login 32758 1.0 ?
web20 5015 php-cgi 21867 0.7 ?
web20 5015 php-cgi 21868 0.6 ?
Hier gut zu sehen, dass MySQL mit 8.9 Prozent am meisten CPU benötigt. Danach folgen dann ein paar Prozesse die auf PHP und eine Webseite hinweisen. Somit wird diese Webseite vermutlich grade „stark“ frequentiert.
PS Befehl – der zusätzlich das Argument des ausgeführten Prozesses anzeigt
# ps -eo pcpu,pid,user,args –no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
8.9 949 mysql /usr/sbin/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib/mysql/plugin –user=mysql –skip-log-error –pid-file=/var/run/mysqld/mysqld.pid –socket=/var/run/mysqld/mysqld.sock –port=3306
2.9 15587 web20 /usr/bin/php-cgi -d open_basedir=/var/www/clients/client11/web20/web:/var/www/clients/client11/web20/private:/var/www/clients/client11/web20/tmp:/var/www/site/web:/srv/www/site/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin -d disable_functions= -d suhosin.executor.func.blacklist= -d upload_tmp_dir=/var/www/clients/client11/web20/tmp -d session.save_path=/var/www/clients/client11/web20/tmp -d sendmail_path=/usr/sbin/sendmail -t -i -f webmaster@site
….
Hier der Load von 8.9 für den MySQL Prozess, sowie den Suhosin für eine Seite mit 2.9 Prozent.
TOP Befehl – CPU, Memory uvm Informationen
Ein weiterer Befehl ist # top, der umfangreicheinformationen in Liveansicht zeigt. Mit den Optionen:
- l = load average
- t = task/cpu statistik
- m = memory info
- können die Spalten sortiert werden
ATOP Befehl – umfassende CPU, Memory, Disk uvm Informationen
ATOP ist ein Tool das ich gerne empfehle, da es noch mehr Informationen als top liefert. Sortieren lassen sich die Spalten mit folgenden Kürzeln:
Zeigt aktive Prozesse sortiert nach:
- m = memory
- d = disk
- n = network
- c = full command line
Sortiert die Prozesse nach:
- C = CPU Aktivität
- M = Memory Verbrauch
- D = Disk Aktivität
- N = Network Aktivität
- A = am meisten aktiver Prozess (auto)
IOstat – Befehl
Wenn das System stark auf der Festplatte arbeitet (vmstat „bi“ und „bo“ sind sehr hoch und „si“ und „so“ sind meist niedrig) , dann läst sich mit dem Befehl „# iostat -x 5“, ich schaue mir den Status für gemessene 5s an, der Disk Load betrachten.
avg-cpu: | %user | %nice | %system | %iowait | %steal | %idle | |||||||
0,4 | 0 | 0,2 | 6,02 | 0 | 93,37 | ||||||||
Device: | rrqm/s | wrqm/s | r/s | w/s | rkB/s | wkB/s | avgrq-sz | avgqu-sz | await | r_await | w_await | svctm | %util |
vda | 0 | 0 | 0 | 8,84 | 0 | 121,29 | 27,45 | 0,14 | 16,36 | 0 | 16,36 | 7,91 | 6,99 |
dm-0 | 0 | 0 | 0 | 8,03 | 0 | 121,29 | 30,2 | 0,14 | 18 | 0 | 18 | 8,7 | 6,99 |
- der Blick geht auf die letzte Spalte „%util“
- wenn dieser bei 100% liegt, dann ist die Disk ausgelastet
- da hier nur eine Disk zu sehen ist, kann man so nicht sagen ob es die Datenbank, Web, Mail etc. ist, was die HDD beansprucht
- die Spalte „await“ ist auch interessant, sie zeigt an wie lange es dauerte bis die Anfrage abgearbeitet werden konnte
IOTop – Befehl
Der Befehl # iotop ist ebenfalls ein ganz wichtiger. Er zeigt wie # top die Auslastung an, jedoch der Disk und die Prozesse mit ihren Parametern die grade auf der Festplatte lesen und schreiben.
Alle Befehle richtig gelesen und interpretiert, sollten reichen um einen Eindruck vom laufenden und ggf. gestörten System zu erhalten. Selbstverständlich gibt es noch viele weitere Tools und Befehlskombinationen…
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.