Fehler erkannt, Fehler gebannt
Nach dem Ausrollen einer größeren Engine-Verbesserung stellte unser Lichess-Bot @clrsrc_lc0 plötzlich den Spielbetrieb ein: Jeder Versuch, einen Gegner herauszufordern, prallte mit „Too many requests" ab. Eine kleine Werkstattgeschichte über aufmerksames Monitoring, einen Blick in offenen Quellcode und einen Fix in drei Schichten.
Das Symptom
Unser Monitoring schlug an: Der Bot war online, aber tatenlos. Ein Blick ins Log zeigte sofort das Muster – im Minutentakt abgewiesene Herausforderungen, eine nach der anderen.
Die Ursachenkette
Die Spurensuche förderte keine einzelne Ursache zutage, sondern eine ganze Kette:
- Der Neustart hatte die nur im Arbeitsspeicher gehaltene Liste jener Gegner gelöscht, die ihr tägliches Partie-Limit bereits erreicht hatten.
- Morgens sind besonders viele Bots ausgelastet – also forderte unser Bot reihenweise genau diese schon gesperrten Gegner erneut heraus.
- Die schiere Menge dieser Anfragen löste schließlich das kontoweite Anfrage-Limit der Plattform aus.
- Und weil der Bot in festem Takt weiter anklopfte, hielt er die Sperre selbst am Leben – ein Limit dieser Art erholt sich nur, wenn man es in Ruhe lässt.
Bestätigt haben wir den Mechanismus, indem wir den quelloffenen Server-Code von Lichess gelesen haben – einer der schönen Vorteile, wenn die Gegenseite Open Source ist.
Der Fix in drei Schichten
- Persistente Sperrliste. Die Liste der ausgelasteten Gegner überlebt jetzt einen Neustart – damit gibt es keinen Anfrage-Schwall mehr direkt nach dem Start.
- Eskalierender Wartetakt. Statt im starren Takt weiter anzuklopfen, wartet der Bot nach Abweisungen zunehmend länger – so kann sich eine einzelne Sperre nicht mehr selbst verewigen.
- Sofort-Pause. Als unmittelbare Gegenmaßnahme eine kurze Komplettpause, damit sich das Limit überhaupt erholen kann.
Zusätzlich haben wir die Rate-Limit-Regeln der Plattform sauber dokumentiert – damit der nächste Ausbau sie von vornherein respektiert.
Fehler erkannt, Fehler gebannt – durch aufmerksames Monitoring, einen Blick in offenen Quellcode und einen mehrschichtigen Fix. Den Bot im Live-Betrieb siehst du auf der Live-Seite; der Quellcode liegt auf GitHub.