Es scheint, als würde der Jabber-Server seit gestern Nachmittag wieder stabil arbeiten, hoffentlich macht er das auch weiterhin. Ich bitte, aufgetretene Unannehmlichkeiten zu entschuldigen. Sollte es weiterhin Probleme geben, bitte diese über das Kontaktformular berichten.
Was ist passiert? Nun, Wippien ist eine P2P-VPN-Software, die auf XMPP basiert. Auf jabber.rueckgr.at sind einige Benutzer registriert, die regelmäßig diese Software einsetzen. Anscheinend versendet Wippien eine große Anzahl an Nachrichten. Wenn ein Empfänger offline geht, während er eine große Anzahl solcher Nachrichten erhält, werden diese Nachrichten in der Datenbank gespeichert, bis der Empfänger wieder online geht. Das funktioniert ausgezeichnet, solange die Anzahl der Nachrichten, die für einen bestimmten Benutzer warten, eine bestimmte Anzahl nicht überschreitet. Allerdings hatte ein Benutzer ungefähr 26.000 Nachrichten, die an ihn zugestellt werden sollten. Immer wenn dieser Benutzer online ging, versuchte ejabberd, diese Nachrichten aus der Datenbank abzurufen und zuzustellen. Dabei verbrauchte ejabberd eine Menge CPU-Zeit und mehr und mehr Speicher, die Nachrichten wurden jedoch nicht zugestellt. Sobald ejabberd 4-5 GB Speicher in Verwendung hatte, stürzte er entweder ab oder wurde von Linux' Out-of-Memory-Killer beendet.
Leider nahm es einige Zeit in Anspruch, herauszufinden, dass die große Anzahl an Offline-Nachrichten, die auf die Zustellung an einen Benutzer warteten, der Grund für die Stabilitätsprobleme von ejabberd waren. Sobald diese Nachrichten gelöscht wurden, funktionierte alles wieder wie gewohnt.
Um ähnliche Probleme künftig zu vermeiden, werden die folgenden Gegenmaßnahmen ergriffen:
- Offline-Nachrichten, die älter als 60 Tage sind, werden automatisch gelöscht.
- Wenn die Anzahl der Offline-Nachrichten an einen einzelnen Benutzer größer als 500 ist, werden so lange die ältesten Nachrichten an diesen Benutzer gelöscht, bis die Anzahl der Nachrichten auf 500 gesunken ist.
Diese Maßnahmen können jederzeit geändert werden, sollte dies notwendig sein, um den stabilen Betrieb der Jabber-Dienste zu gewährleisten.