Ratenbegrenzung in Bitbucket Data Center: Selbstschutz vor Performance-Problemen

Gefahren für die Bitbucket-Performance

Bedrohungen für die Stabilität einer Unternehmens-Software wie Bitbucket kommen aus vielen Richtungen. Manchmal ist es einfach ein schlecht geschriebenes Skript, das zu oft Daten aus neuen Commits und Pull-Requests abfragt, oder eine interne Build-Anwendung, die die Nutzerberechtigungen prüft und viele unnötige Requests schickt.

Diese Szenarien sind eine Gefahr für die Stabilität und Performance des Systems: Wenn ein oder mehrere Akteure die Instanz durch automatisierte Skripte mit Anfragen bombardieren und den Großteil der Ressourcen auf sich ziehen, sackt die Performance ab – im Ernstfall kommt es vielleicht sogar zu einem Denial of Service. Je größer die Organisation und je stärker die produktiven Entwicklungsteams auf die Verfügbarkeit von Bitbucket angewiesen sind, desto schwererwiegend können die Folgen sein.

Diese Bedrohungen sind mit signifikanten Kosten verbunden. Entwickler können ihr System nicht vernünftig nutzen und schauen derweil genervt auf Lade-Icons oder warten frustriert darauf, dass Seiten aufgerufen oder Aktionen durchgeführt werden. Administratoren schaufeln sich unterdessen (oder auch erst Stunden später) durch Logs und Analysen, um die Ursache zu finden.

Und weitere Beeinträchtigungen zu verhindern, muss das Admin-Team den betreffenden Akteur kontaktieren, damit er sein Skript anpasst oder die Aktion stoppt. Während all dieser Zeit fließt durch verlorene Produktivität und verschwendete Ressourcen Geld aus dem Unternehmen.

Lösungen wie eine CPU-Aufstockung oder bessere Hardware adressieren letztlich nur die Symptome. Organisationen brauchen einen robusten, langfristigen Weg, um ihre Instanzen vor solchen Bedrohungen zu schützen. Hier kommt die Ratenbegrenzung ins Spiel, die Atlassian für Bitbucket Data Center mit der neuen Version ausgeliefert hat.

So funktioniert die Ratenbegrenzung

Die Ratenbegrenzung ist ein Werkzeug, das es erlaubt, den Umfang des ein- oder ausgehenden Traffics zu kontrollieren. Ein beliebter Algorithmus für die Ratenbegrenzung nennt sich Token Bucket, auch bekannt als "Leaky Bucket" - und diesen Ansatz nutzt Atlassian nun für Bitbucket Data Center. Jeder User bekommt einen Totek Bucket (entsprechend der Token-Bucket-Größe), und jedes Mal, wenn sie HTTP-Requests stellen, wird ein Token aus dem "Behälter" entfernt.

Mit der Zeit akkumulieren sich neue Tokens mit einer konstanten Rate (die Auffüllrate des Token Bucket), bis der Behälter wieder gefüllt ist. Wenn der Bucket eines Users leer ist, sind für ihn keine Requests möglich.

Bitbucket Data Center Ratenbegrenzung

Zusätzliche Sicherheits- und Kontrollebenen

Admins haben einige Optionen mehr, die ihnen die Kontrolle und Flexibilität verleihen, auf die individuellen Bedürfnisse des Unternehmens einzugehen. Eine davon ist die Möglichkeit, potenziell problematische Akteure im historischen Verlauf zu identifizieren.

Für Administratoren ist im System sichtbar, welche User in den letzten 24 Stunden ratenbegrenzt worden sind. Dank dieser Informationen können Admins auf die entsprechenden Personen zugehen, um ihnen Vorschläge zu machen, wie sich Ratenbegrenzungen künftig vermeiden lassen, oder Ausnahmen für Grenzfälle definieren.

Die globalen Standardeinstellungen für den Token-Bucket-Größe liegen bei 60 und einer Auffüllrate von 5, aber es gibt zwei Arten von Ausnahmen:

  • Individuelle Einstellungen erlauben: Damit erhält ein Nutzer eine andere Token-Bucket-Größe und Auffüllrate.
  • Unbegrenzte Anfragen erlauben: Damit wird die Ratenbegrenzung für den User entfernt.

Bitbucket Ratenbegrenzung Konfiguration

In künftigen Releases sollen hier weitere Konfigurationsmöglichkeiten und Optionen hinzukommen, die es noch besser erlauben, das Feature an die individuellen Anforderungen anzupassen.

Ein Beispiel aus dem Alltag

Atlassian hat für den sinnvollen und zielführenden Einsatz dieser neuen Funktionalität ein cooles Beispiel berichtet. Ein Team hatte einen Bot für das Team-Wallboard programmiert – und dieser bombardierte Bitbucket mit mehr als 10.000 Requests pro Stunde! Damit wurde Bitbucket Data Center ungewollt einer starken Belastung ausgesetzt. Das verdeutlichen die Spitzen in der Verlaufsgrafik unten.

Kurz darauf wurde die Ratenbegrenzung wirksam und das Team erhielt nun Fehlermeldungen von den Skripten (HTTP 429). Schnell wurden die Skripte so angepasst, dass sie weniger Anfragen stellen – und diese Anpassungen machten sich direkt in einem Rückgang des Request-Aufkommens bemerkbar.

Während dieser Zeit reduzierte sich die Ressourcenbelastung von Bitbucket Data Center wieder, ohne dass ihrerseits die Wallboard-Funktion beeinträchtigt wurde. Und keine dieser Änderungen machte es erforderlich, dass ein Administrator aktiv werden musste, um nach dem problematischen Akteur zu suchen und aufwändige Ursachenforschung zu betreiben.

Die Ratenbegrenzung kann also auch dazu betragen, einen organischen Verhaltenswandel in den Teams des Unternehmens zu fördern: Wenn sie dem System schaden, wirkt sich das direkt negativ auf sie selbst aus. Das schult einen bewussten Umgang mit Ressourcen, von dem letztlich alle Teams profitieren.

Git und Bitbucket effektiv nutzen? Wir sind Ihr Partner!

Möchten Sie mehr über Bitbucket erfahren? Würden Sie das System gerne unverbindlich testen oder direkt lizenzieren? Haben Sie Fragen zur Adaption von Git in der Software-Entwicklung? Wir sind Atlassian Platinum Solution Partner und unterstützen Sie gerne bei allen Aspekten rund um Atlassian Bitbucket: Evaluierung, Lizenzierung, Integration, Optimierung. Melden Sie sich bei uns!

Weiterführende Infos

Bitbucket Server und Data Center 6: Technische Weichenstellung für die Zukunft
Enterprise-Features für Git-Entwicklungsteams: Smart Mirroring, Git Large File Storage, Projekte
Jira und Bitbucket integrieren: Mehr Transparenz, effizientere Workflows, besserer Kontext