Ratenbegrenzung
Wir setzen Ratenbegrenzungen durch, damit die Nutzung eines Kunden andere Kunden nicht beeinträchtigt. Fehlerhafter Integrationscode kann dazu führen, dass in kurzer Zeit zu viele Anfragen gesendet werden, was übermäßig hohe Rechnungen oder längere Wartezeiten in der Queue verursachen kann.
Für Assemblies gelten drei Beschränkungen:
- Kunden können bis zu 250 Assemblies pro Minute erstellen.
- Kunden können 250 Assemblies gleichzeitig ausführen.
- Assemblies von Kunden können maximal 8 Stunden ausgeführt werden, bevor der Prozess beendet wird.
Unserer Erfahrung nach reicht dies selbst für höchste Nutzungsanforderungen aus. Unternehmenskunden können jedoch uns kontaktieren, wenn sie höhere Grenzwerte benötigen.
Die Beschränkungen dienen hauptsächlich dazu, Kunden vor Programmierfehlern anderer Kunden nach Art einer „Endlosschleife“ zu schützen.
Kunden, die eine Ratenbegrenzung erreichen, erhalten den Fehler RATE_LIMIT_REACHED und den HTTP-Statuscode
413. Die JSON-Nutzlast dieses Fehlers enthält die Eigenschaft info.retryIn. Sie gibt an, wie viele
Sekunden verbleiben, bis eine weitere Assembly erstellt werden kann. Wenn Sie eines unserer
offiziellen SDKs verwenden, sind entsprechende Wartezeiten und Retries bereits enthalten.
Das folgende Beispiel zeigt, wie die JSON-Nutzlast aussehen kann:
{
"error": "RATE_LIMIT_REACHED",
"message": "Request limit reached",
"info": {
"retryIn": 41
}
}
Ratenbegrenzung bei hoher Frequenz
Zusätzlich zur oben beschriebenen Ratenbegrenzung gibt es einen weiteren Mechanismus, der zu schnell aufeinanderfolgende Anfragen verhindert. Diese Ratenbegrenzung wird in den folgenden Fällen ausgelöst:
- Wenn von einem Client zu viele TCP-Verbindungen gleichzeitig geöffnet sind
- Wenn von einem Client in den letzten 10 Sekunden zu viele TCP-Verbindungen geöffnet wurden
- Wenn bei einem Client in den letzten 10 Sekunden zu viele HTTP-Fehlercodes aufgetreten sind
- Wenn von einem Client in den letzten 10 Sekunden zu viele HTTP-Anfragen gesendet wurden
In diesen Fällen erhält der Client den HTTP-Statuscode 429, und die Antwort enthält die
folgende JSON-Nutzlast:
{
"error": "429 Too Many Requests",
"message": "HAProxy thinks you have sent too many requests in a given amount of time. "
}