Hohe load (Notfallhandy) bearbeiten

Aus Glaskugel
Zur Navigation springen Zur Suche springen


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 top oder htop
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 free und free -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 aux erhältst Du eine Prozessliste, ps auxf liefert 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