Hohe load (Notfallhandy) bearbeiten
Allgemeines
Die load average ist ein sehr wichtiger Wert im Bezug auf die Systemauslastung. Der Load in Linux-Systemen ist die Anzahl an wartenden Prozessen. Der optimale Wert entspricht immer der Anzahl der im System vorhandenen Prozessoren. In Systemen mit einem Single-Core-Prozessor ist der optimale Load 1, da zu dem Zeitpunkt ein Prozess in der Bearbeitungsschlange des Prozessors ist. Liegt der Wert unterhalb von 1, ist das System unterfordert, bei Werten über 1 überfordert. In Multicore-Prozessoren liegt der optimale Load höher. Bei einem Quad-Core-Prozessor beispielsweise 4.
Durch die aktuelle Anzahl der Prozesse lässt sich schlecht die Auslastung eines Systems abschätzen. Daher werden drei Mittelwerte (1 Minute, 5 Minuten und 15 Minuten) über die Anzahl der Prozesse gebildet.
- Wichtig
- Die Load beschreibt nicht die Auslastung der CPU. Es kann mehrere Gründe haben, warum die Bearbeitungswarteschlange wächst und immer mehr Prozesse auf ihre Abarbeitung warten.
Tools zur Analyse der Systemauslastung
Die Analyse der Systemauslastung erfolgt angemeldet als root auf der Shell des jeweiligen Servers. Folgende Tools können wir hier nutzen:
htop oder top
- top und htop zeigen die Auslastung der wichtigsten Systemressourcen wie CPU oder RAM
- Der Aufruf erfolgt per
topoderhtop - markiert sind die Bereiche, die als Erstes ins Auge springen sollten:
- 1. Zeile: load
- 3. Zeile: CPU Auslastung (Achtung umgekehrt denken 60%id (idle) bedeutet 60% werden nicht benutzt = Auslastung 40%)
- 4. Zeile (grün): Belegung des Arbeitsspeichers

free oder free -m
- Etwas übersichtlicher als top und htop ist das Tool free, welches uns ausschließlich über die Arbeitsspeicher-Belegung informiert.
- Der Aufruf erfolgt über
freeundfree -m
ps aux oder ps auxf
- Manchmal benötigt man eine genaue Auflistung aller laufenden Prozesse um evtl. einen fehlerhaften Prozess ausfindig zu machen und gezielt zu beenden
- processes liefert eine Momentaufnahme der laufenden Prozesse. Wenn eine ständige Aktualisierung der Prozessliste gewünscht ist, solltest Du allerdings top verwenden.
- via
ps auxerhältst Du eine Prozessliste,ps auxfliefert Dir eine "Prozessbaum"-Ansicht. Hier kannst Du den Prozess und die erzeugten Unterprozesse recherchieren. - Noch genauere Infos bekommst Du auch in diesem Artikel: Alle laufenden Prozesse anzeigen
POST Request abrufen
- Um zu sehen wie viele Aufrufe von den jeweiligen Abos kommen
grep -H POST /var/www/vhosts/system/*/logs/access*log | cut -d ':' -f1|sort|uniq -c|sort -n|tail -n 20
lynx als Systemmonitor
- für unsere Server haben wir ein Systemmonitoring mit welchem wir eine Momentaufnahme der gerade aktiven Domainaufrufe auswerten können
lynx --dump --width 200 -auth=monitor:MsdorRf2p3f http://localhost:7080/server-status | less
temporäres Aussperren einer IP-Adresse bis zum Reboot des Servers
iptables -I INPUT -s 1.2.3.4 -j DROP
- Sperrung aufheben
iptables -D INPUT -s 1.2.3.4 -j DROP
auffällig viele Verbindungen untersuchen
- Wenn nun z.B. eine IP "'z.B. 91.223.89.130"' mit vielen Verbindungen zu "'cardmart.de"' auffällt würden wir uns diese IP in der access-log genauer anschauen
cat /var/www/vhosts/system/cardmart.de/logs/access_log | grep 91.223.89.130 | less
weitere Auffälligkeiten "xmlrpc.php"
- sollten im lynx verdächtige xmlrpc Verbindungen auftreten hilft dieser Beitrag Abuse Anfagen für xmlrpc.php ausfindig machen oder untenstehender Command
grep xmlrpc /var/www/vhosts/system/*/logs/access_log
Komische Einträge die vermutlich einen Angriff darstellen
- 91.223.89.130 - - [08/Dec/2016:14:03:06 +0100] "GET /cgi-bin/search.cgi HTTP/1.0" 404 380 "() { Referer; }; echo -e \"Content-Type: text/plain\\n\"; echo -e \"\\0141\\0143\\0165\\0156\\0145\\0164\\0151\\0170\\0163\\0150\\0145\\0154\\0154\\0163\\0150\\0157\\0143\\0153\"" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21"
Einträge einer IP zählen (nur zum Spass)
cat /var/www/vhosts/system/cardmart.de/logs/access_log | grep 91.223.89.130 | wc -l- 12623
Queries Auswerten und Zählen
mysqladmin -u admin -p`cat /etc/psa/.psa.shadow` -i2 status
- Ausgabe kann wie folgt aussehen:
- Uptime: 548218 Threads: 5 Questions: 333058910 Slow queries: 0 Opens: 5127974 Flush tables: 1 Open tables: 10240 Queries per second avg: 607.530
- Uptime: 548220 Threads: 12 Questions: 333061816 Slow queries: 0 Opens: 5128132 Flush tables: 1 Open tables: 10240 Queries per second avg: 607.533
- Uptime: 548222 Threads: 9 Questions: 333064522 Slow queries: 0 Opens: 5128226 Flush tables: 1 Open tables: 10240 Queries per second avg: 607.535
- Wie man hier sieht, sind innerhalb von 4 Sekunden ~5.500 Queries pro Sekunden durchgeführt worden (333064522 - 333058910)
- Uptime - Die Uptime sind die Sekunden seit dem Start des SQL-Services
- Questions - Die Questions sind die SQL-Queries seit diesem Zeitpunkt.
Nacharbeitung
- - Bitte Kd per Mail informieren, der sollte diese IP-Adresse in seiner .htaccess aufnemen, ansonsten bitte direkt mit aufnehmen
- - Eintrag im Bahnhof vornehmen, bla blubb hohe Load, da IP "" zu viele Anfragen gestellt hat, sieht nach Angriff aus. IP in .htaccess gesperrt, Kd informiert