Vom Absturz zum Kernel-Patch

Auf unseren Premium-Servern hatten wir Anfang des Jahres wirklich heftige Probleme mit ständigen Abstürzen, die sich nicht erklären ließen. Aus heiterem Himmel fingen die Server an, sich immer wieder komplett aufzuhängen, ganz offensichtlich wegen Problemen mit IO. Der Verdacht fiel auf die RAID-Controller von Adaptec, und wochenlang haben wir alle möglichen Probleme analysiert, die sich im Internet dazu finden ließen, Workarounds ausprobiert und sogar mit Energiespareinstellungen experimentiert, es half alles nichts. Und das merkwürdigste: Wochen vorher gab es diese Probleme noch gar nicht. Wenn vorher die Server hunderte Tage problemlos liefen, schaffte es nun kaum eins der Systeme, mal 30 Tage am Stück durchzuhalten, teilweise nur wenige Tage. Im Support wurde das immer peinlicher, es war unmöglich eine Aussage zu Ursache und Behebung zu machen und es musste dringend eine Lösung her.

Also wurde ein Testsystem abgestellt, aber auf dem ließen sich die Fehler nicht reproduzieren. Erst auf einem zweiten Testsystem, diesmal ohne RAID-Controller, kam durch Zufall ein relativ zuverlässiger Test zustande (ein Mischung aus fio und dd), wie das Problem nachzustellen war. Und dann war auch klar: es kann nicht der Controller sein. Es war ein Deadlock im Linux-KernelModul bcache. Nach ein paar Minuten IO-Last hing sich das System einfach auf, und zwar dann, wenn es Daten von einer Cache-SSD auf eine HDD geschrieben hat, während die Geschwindigkeit, mit der das passieren soll, im gleiche Moment neu berechnet wurde.

Mit dem zuständigen Kernel Maintainer ließen sich dann zwei potenzielle Quellen für das Problem finden, und mit ein bisschen Feintuning an Kernel-Parametern konnte ich das Problem auf eine der beiden Stellen eingrenzen. Zum Glück war es möglich, das Problem (auf Kosten der Schreib-Performance) durch weiteres Tuning dieser Parameter abzustellen. Ich habe mir dann lang und breit erklären lassen (müssen), was der Code zu welchem Zweck tut, und der Fix war unfassbar simpel: eine Sperre (genauer gesagt eine reader/writer semaphore), die eigentlich komplett unnötig war und nur „weil man ja nie weiß“ vorhanden war, produzierte das Problem. Zwei Zeilen Code gelöscht, Kernel kompiliert, und schon war das Problem auf dem Test-System, auch nach Tagen von IO-Volllast, verschwunden.

Kurz darauf hatte ich schon geplante Wartungsarbeiten angesetzt, so dass der gepatchte Kernel zumindest auf einigen Systemen produktiv gehen konnte, und siehe da: keine Abstürze mehr. Adaptec (die RAID-Controller) war also doch nicht schuld, der Kernel war es! Warum allerdings das Problem seit kurzem so häufig auftrat und vorher nicht, das bleibt ein Rätsel.

Und so kommt es, dass ich demnächst meinen ersten – und ehrlich gesagt ziemlich kurzen, da er nur zwei Zeilen löscht – Patch für den Linux-Kernel einreichen kann. Und zumindest für mich ist es schon ein kleiner Ritterschlag, dass mein Code (oder mein Entfernen von Code) in den Kernel aufgenommen wird und auch noch so ein ekeliges Problem löst. Wäre das Problem nicht wirklich unangenehm gewesen und hätte mir unzählige schlaflose Nächste bereitet hätte zumindest die Jagd nach dem Fehler fast Spaß gemacht, denn in manchen Informatikern steckt einfach ein kleiner Sherlock Holmes, der erst dann zufrieden ist, wenn er den Fall löst. Und das ist bei mir definitiv der Fall 😉

Und der hilfreiche Kernel Maintainer bekommt zum Dank – er erwähnte eine spezielle Scotch-Sorte, die er gerne trinkt – ein Paket nach Alaska geschickt. Denn dort (für mich ist dort in etwa das Ende der Welt) hat man scheinbar viel Zeit, um das wie, was und warum von  Linux-Kernel-Code zu erklären, und dafür möchte ich mich gerne bedanken!

Ein Wörtchen zu den Update-Posts

Ende letzten Jahres habe ich begonnen, Freitags einen „Rückblick auf die Woche“ zu schreiben, der im Wesentlichen aus den neuen Features bestand, die wir in der Woche hinzugefügt haben. Das kam gut an, war aber für uns leider nicht so einfach. Ich musste mindestens einen vollen Tag der Woche für die Vorbereitung dieses Posts aufwenden: nicht in jeder Woche haben wir neue Features, da wir auch mal an Updates, Bugfixes, technischen Aufräum-Arbeiten etc. arbeiten müssen. Und das ist ein deutlich größerer Teil ist als die Umsetzung neuer Features. Deshalb fing am Donnerstag oder Freitag die Suche an, was denn diese Woche noch in den Blog-Post kommen könnte. Und andere Dinge blieben dafür liegen, dass wir noch 1-2 Punkte auf die Freitags-Update-Liste setzen konnten.

Deshalb überlegen wir uns nun, wie dieses Format anders aussehen könnte, z.B. im Rhythmus von 2 Wochen, oder wir legen den Fokus mehr darauf, ein bestimmtes Feature vorzustellen, oder zusätzlich über bestimmte aktuelle interne Themen (sofern sie relevant sind, wie z.B. aktuelle DDoS-Wellen, etc) zu berichten.

Hast Du auch eine Idee? In den Kommentaren ist Platz dafür, und vielleicht können wir den Wunsch erfüllen!

Adventsgewinnspiel #4

In einer Woche ist Weihnachten, aber wir haben heute schon Geschenke für euch! Heute verlosen wir drei komplette Hosting-Pakete für ein Jahr! Dieses beinhaltet eine .de/.at./.ch/.eu/.com/.net/.org-Domain (nach Wahl), sowie das lima-city Premium-Paket für ein Jahr lang kostenfrei. Dazu gibt es noch eine lima-city-Tasse frei Haus!

Einfach hier bis zum 19.12., 18:00 kommentieren, den Beitrag auf Facebook teilen oder auf Twitter retweeten und schon kommst Du in den Lostopf!

Last Updates

Weihnachten und der Jahreswechsel kommt in riesigen Schritten näher. Weil wir auch etwas Entspannung brauchen, melden wir uns im Blog schon jetzt für den Rest des Jahres ab. Im Januar geht es hier weiter. Natürlich ist der Support weiter erreichbar. Wir werden allerdings über die Weihnachtsfeiertage nur auf technische Notfälle reagieren (oder wenn sich jemand vor der Familie in Arbeit flüchten möchte 😉 ) und keine regulären Anfragen bearbeiten.

Am Sonntag gibt es übrigens noch einmal etwas zu gewinnen, es lohnt sich also, noch einmal reinzuschauen!

Wir wünschen schöne Weihnachtsfeiertage und einen guten Rutsch!

Adventsgewinnspiel #3

Auch heute haben wir etwas für euch:

Du möchtest mit einer neuen Domain in das neue Jahr starten? Kein Problem. Kommentiere diesen Blog-Post und Du kommst in den Lostopf für eine .de Domain! Ebenfalls kannst Du unsere Posts auf Facebook oder Twitter teilen.

Unter allen Kommentatoren, Facebook-Sharern und Twitter-Repostern verlosen wir 3 .de-Doamins! Wir werden morgen, am 12.12.2016, den Gewinner benachrichtigen.

Updates 11

Diese Woche haben wir uns nicht auf neue Features, sondern auf Stabilisierung und Bugfixes konzentriert, denn was bringt das schönste Feature, wenn es nicht, nicht immer, oder nicht richtig funktioniert?

An folgenden Systemen haben wir geschraubt:

– ein Memory Leak im SSL-Terminator wurde gefunden und behoben
– der Status einiger Domains (hauptsächlich nTLDs) wurde falsch angezeigt (als umgezogen, obwohl nicht umgezogen)
– Softwares wurden im Software-Installer angezeigt, selbst wenn sie noch nicht freigeschaltet waren (konnten aber nicht installiert werden)
– für einige Spezialfall-Domains (z.B. .it und .es) haben wir Vorkehrungen getroffen
– nach dem Umzug eines Accounts zwischen zwei Servern wurde das MySQL-Passwort in einigen Fällen nicht korrekt eingetragen, das ist behoben
– die Stabilität der MySQL-Server unter „memory pressure“ wurde verbessert (durch OOM score adjustments)

Natürlich waren noch jede Menge andere Kleinigkeiten dabei. Und mindestens genauso viele Änderungen, Bugfixes und Verbesserungen gab es auch im Admin-Interface, aber das ist eine andere Geschichte 😉

Am Sonntag gibt es auch diesmal wieder etwas zu gewinnen! Reinschauen auf Facebook und Twitter lohnt sich!

Wir posten Freitag Nachmittags einen kleinen Rückblick auf die Woche. Auch nächste Woche tut sich bestimmt wieder einiges, also: kiek mol wedder rin!

Adventsgewinnspiel: Sieger (2)

Nicht nur zum 2., sondern auch am ersten Advent hatten wir ein „Gewinnspiel“ veranstaltet: wir haben unter allen Bestellungen aus der 48. Kalenderwoche 5 Bestellungen ausgelost, die ihr Geld zurückbekommen haben. Zwei Gewinner dürfen wir mit Namen nennen, der Rest bleibt lieber anonym. Gewonnen haben:

1. Daniel O.
2. Jason B.

In beiden Fällen handelte es sich um eine .de-Domain. Herzlichen Glückwunsch!

Adventsgewinnspiel: Sieger

Das Los hat über die Gewinner unseres Gewinnspiels zum 2. Advent entschieden, es haben gewonnen:

1. Twitter: Kevin Hartmann / @looxPetzichen
2. Facebook: Eva Marie Schreck
3. Blog-Kommentar: Jonathan

Herzlichen Glückwunsch! Und für alle unglücklichen Nicht-Gewinner: es gibt noch mehr Advents-Sonntage 😉

Gewinnspiel zum 2. Advent

Was gibt es in der kalten Jahreszeit schöneres als ein wärmendes Getränk? Passend dazu haben wir nun wunderschöne Tassen von lima-city. Du möchtest eine Tasse gewinnen? Kommentiere diesen Blog-Post und Du kommst in den Lostopf! Ebenfalls kannst Du unsere Posts auf Facebook oder Twitter teilen.

Tasse
Unter allen Kommentatoren, Facebook-Sharern und Twitter-Repostern verlosen wir 3 Tassen! Wir werden morgen, am 05.12.2016, den Gewinner benachrichtigen.

Updates #10

Leider wurden diese Woche all unsere schönen Pläne über den Haufen geworfen, da es an allen Ecken und Enden gebrannt hat. Defekte Festplatten, crashende MySQL-Server und schwer zu findende Seiteneffekte von Web-Server-Konfigurationen haben uns die Woche auf Trab gehalten.

Die Ausfälle haben aber dazu geführt, dass wir unsere Status-Seite weiter aufgeschlüsselt haben. Dort sind nun nicht mehr „Premium-Paket“ und „kostenloser Webspace“ als Platzhalter für jeweils Webserver, Datenbanken und FTP zu finden, sondern diese 3 Teilsysteme sind dort als separate Punkte aufgeführt. Alle 3 Komponenten werden von einem externen System getestet und Störungen werden automatisch eingetragen. Deshalb sind dort Störungen bereits zu finden, wenn die Technik gerade erst alarmiert wird.

Am zweiten Advent setzen wir übrigens unsere Advents-Aktion mit einem Gewinnspiel fort. Es lohnt sich, am Sonntag mal auf Facebook, den Blog oder Twitter zu schauen 😉

Wir posten Freitag Nachmittags einen kleinen Rückblick auf die Woche. Auch nächste Woche tut sich bestimmt wieder einiges, also: kiek mol wedder rin!

« Ältere Beiträge