Rate Limiting für Assemblies sorgt für mehr Stabilität
In der jüngeren Vergangenheit kam es bei uns zu Verlangsamungen, erhöhten Queue-Zeiten und höheren Fehlerraten. Abgesehen von Ausfällen bei Route 53, RDS und im LAN, die wir auf EC2 erlebt haben, wurden einige dieser Probleme auch dadurch verursacht, dass Nutzer zu viele Anfragen auf einmal gesendet haben, etwa beim Import einer großen Bibliothek von Videos oder Bildern. Heute beheben wir das, indem wir Rate Limiting einführen.
Grundsätzlich sollte das Verhalten eines Kunden niemand anderen beeinträchtigen. Da sich alle unsere Kunden nach wie vor eine einzige Job-Queue teilen, können wir das ohne Rate Limits nicht garantieren. Die meisten Probleme haben wir bereits angegangen, indem wir Priority Queues eingeführt haben (bei einem Kunden mit X Jobs in der Queue werden die nächsten Jobs hinten an die Queue angehängt, während Jobs anderer Kunden vorne eingereiht werden) und die Skalierungszeiten auf 2 Minuten pro Octa-Core-Maschine reduziert haben usw.
Doch egal, wie schnell wir skalieren können, in unserer physischen Welt gibt es immer Grenzen. In der Vergangenheit gab es große Batch-Importe, bei denen Nutzer Tausende Videos auf einmal oder Zehntausende Bilder importiert haben. Dadurch musste unsere Plattform auf 100 Maschinen hochskalieren, doch Assemblies anderer Kunden konnten immer noch bis zu 90 Minuten laufen, was überhaupt nicht akzeptabel ist.
Neben legitimen Massenimporten kann auch fehlerhafter Integrationscode dazu führen, dass in sehr kurzer Zeit zu viele Anfragen gesendet werden. Das kann am Monatsende zu hohen Rechnungen führen, mit denen der Kunde nicht gerechnet hat.
Kurz gesagt: Wir begegnen diesen Problemen, indem wir die Anfragen begrenzen, die Sie senden können.
Vorerst begrenzen wir nur die Anzahl der Assemblies, die Sie erstellen können, auf 250 pro Minute. Wir halten das für mehr als ausreichend für eine vernünftige Nutzung. Wir werden die Auswirkungen dieser Maßnahme genau beobachten und bei Bedarf weitere Limits einführen.
Sollten Sie jemals das Rate Limit erreichen, erhalten Sie einen Fehler vom Typ
413 RATE_LIMIT_REACHED. Das Fehler-JSON enthält einen Unterschlüssel
info.retryIn, der Ihnen angibt, wie viele Sekunden Sie warten müssen, bevor Sie
Ihre nächste Assembly erstellen können. Mit diesen
Informationen möchten wir unseren Kunden eine reibungslose Integration erleichtern und
sicherstellen, dass Ihr Import keine Sekunde länger gedrosselt wird als nötig.
Denken Sie daran, dass Anfragelimits eine Funktion sind, die unsere Plattform vor (meist ungültiger) übermäßiger Nutzung schützt und so für alle einen reibungsloseren Ablauf sorgt. Wir erlauben zudem unterschiedliche Rate Limits pro Kunde. Wenn Sie also der Meinung sind, dass Sie ein höheres Rate Limit benötigen, erstellen Sie bitte ein Support-Ticket, und ich erhöhe es gerne.
