Sind die Ressourcen eines Servers seinen Anforderungen nicht gewachsen, bemerkt man das zwar in der Regel schnell, aber im Live-Betrieb ist es dann schon zu spät. Im laufenden Betrieb verschafft hier gutes Monitoring Abhilfe, das die durchschnittliche Last und die Spitzenlast überwacht und es damit ermöglicht, einen Anstieg rechtzeitig zu bemerken und zu reagieren, bevor es zu Problemen kommt.
Auf von uns gewarteten Systemen überwachen wir darüber hinaus auch das Auftreten des OOM-Killers, also wenn Prozesse abgebrochen werden, um einen Out-Of-Memory-Fehler des Servers zu vermeiden.
Will man vorab die möglichen Grenzen austesten, oder Worst Case Scenarios wie besagten volllaufenden RAM nachstellen, kann man in Linux auf eine Reihe von Tools und Möglichkeiten zurückgreifen.
Vorweg - alle angeführten Befehle sollten, besonders auf Live-Systemen, nur mit Vorsicht ausgeführt werden!
Um dazu das Verhalten des Systems bei hoher Last nachzustellen, gibt es das Tool "stress". Mit ihm lassen sich kontrolliert Worker spawnen, die per übergebener Optionen eine Vielzahl an möglichen Situationen für das System simulieren können. So zum Beispiel, was passiert, wenn PHP tatsächlich die maximale Anzahl seiner erlaubten Worker ausnutzt.
Die gebräuchlichsten Optionen, um gezielt CPU, RAM und Festplatte zu testen, sind:
-c --cpu N
N Workern, die sqrt() aufrufen
-m --vm N
N workern, die malloc()/free() aufrufen
--vm-bytes B
Speicher, der pro Worker reserviert wird (default 256MB)
-d, --hdd N
N Worker, die write()/unlink() ausführen
-i --io N
N Worker, die sync() aufrufen
--hdd-bytes B
Bytes, die pro Worker geschrieben werden (default 1GB)
Noch genauer kann man mit stress-ng testen, das dafür entworfen wurde mögliche Hardware-Probleme bei hoher Last auszutesten. Hier ist der Link zu weiteren Infos.
Mit Vorsicht auszuführen ist eine brachialere Methode über die Shell:
echo {1..10000000}
Es empfiehlt sich dabei, mit einer kleineren Zahl anzufangen, und erst nach Bedarf zu erhöhen. Da der Zahlenraum im RAM expandiert wird, kann man so sehr schnell das Limit des Systems erreichen.
Natürlich gibt es eine Reihe weiterer Möglichkeiten, die Stabilität eines Servers, auch unter extremer Belastung, auszutesten und zu verbessern. Dabei muss man ja nicht gleich ganz so extrem wie Netflix mit Chaos Monkey vorgehen. So extrem betreibt man es wirklich selten - aber (potentielle) Fehlerfälle sollten wirklich ausgetestet werden.
Wenn Sie konkrete Anforderungen haben, zögern Sie nicht, ein unverbindliches Beratungsgespräch mit uns zu vereinbaren. Wir helfen unseren Kunden regelmäßig, unter anderem maximale Zugriffszahlen auf Webseiten zu ermitteln und hochverfügbare Lösungen zu planen.
Seit 2003 machen wir nicht nur Webentwicklern das Leben leichter. Als leidenschaftliche Techniker lieben wir gute Lösungen und als 100% remote Company effiziente Abläufe und Kommunikation.
Lernen Sie uns, unsere Partner und unsere Kunden kennen.