Informationen zu einem datengesteuerten Ansatz zu Ratenlimits
Ohne Geschwindigkeitsbeschränkungen kann eine einzelne CI-Integration, die zehntausende Anforderungen pro Stunde macht, Ihre gesamte Instanz für jeden Benutzer verlangsamen. Das Festlegen von Grenzwerten kann jedoch zu aggressiv die Integrationen, auf die Ihre Teams angewiesen ist, unterbrechen. Ein datengesteuerter Ansatz hilft Ihnen dabei, das richtige Gleichgewicht zu finden– beginnen Sie mit der Beobachtung realer Nutzungsmuster und erzwingen dann schrittweise Grenzwerte basierend auf den von Ihnen gesammelten Daten.
Der Ansatz folgt den folgenden Phasen:
-
**Beobachten**: Aktivieren Sie die Protokollweiterleitung und analysieren Sie API-Datenverkehrsmuster. -
**Baseline**: Aktivieren Sie die Ratenbegrenzungen mit einem hohen Anfangswert, um mit der Datensammlung für Ratenbegrenzungen zu beginnen. -
**Verfeinern**: Passen Sie Grenzwerte basierend auf beobachteter Nutzung an und kommunizieren Sie mit betroffenen Teams. -
**Beibehalten**: Überwachen und Anpassen von Grenzwerten im Laufe der Zeit.
Informationen zum Aktivieren von Rate-Limits über die Verwaltungskonsole finden Sie unter Configuring rate limits (Konfigurieren von Ratenbegrenzungen).
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie folgendes haben:
- Administrationszugriff auf die Verwaltungskonsole
- Zugriff auf die Konfiguration der Protokollweiterleitung
- Die Möglichkeit, zentralisierte Protokolle zu analysieren
- Ein Verständnis der API-Nutzungsmuster und kritischen Integrationen Ihrer Organisation
Schritt 1: Aktivieren der Protokollweiterleitung
Verwenden Sie die Protokollweiterleitung, um API-Anforderungsprotokolle für die Überwachung und Analyse zu zentralisieren. Weitere Informationen findest du unter Protokollweiterleitung.
Konzentrieren Sie sich beim Analysieren weitergeleiteter Protokolle auf diese Schlüsselfelder:
| Feld | Beschreibung |
|---|---|
Timestamp | Verfolgt, wann Anforderungen gestellt werden |
user / gh.actor.login | Identifiziert den Benutzer oder die Integration, die Anfragen stellt. |
path_info / gh.request.api.route | Die API-Route wird abgerufen |
status | HTTP-Antwortcode (z. B. 200 für Erfolg oder 429 bei eingeschränkter Rate) |
user_agent | Identifiziert den Client oder die Integration, die die Anforderung sendet. |
Schritt 2: Analysieren von API-Trends vor dem Aktivieren von Grenzwerten
Analysieren Sie vor dem Aktivieren von Zinslimits Ihre allgemeinen Nutzungstrends, um einen Basisplan festzulegen:
-
**Identifizieren der wichtigsten Verbraucher.** Suchen Sie Benutzer oder Integrationen, die die höchste Anzahl von Anforderungen machen. -
**Überprüfen Sie Endpunkte mit hoher Nachfrage.** Heben Sie API-Routen (`path_info`) hervor, die den meisten Datenverkehr erhalten und von der Optimierung profitieren können. -
**Erkennen Sie ineffiziente Muster.** Suchen Sie nach Anzeichen für eine hohe oder ineffiziente Nutzung, z. B. häufige Abfragen ohne Zwischenspeichern oder redundante Anforderungen.
Diese Basisdaten helfen Ihnen dabei, Ratengrenzwerte festzulegen, die auf tatsächlicher Nutzung basieren statt auf Schätzungen.
Schritt 3: Aktivieren von Ratenlimits mit einem hohen Anfangswert
Wenn Sie bereit sind, Ratelimits zu aktivieren, beginnen Sie mit einem hohen Schwellenwert, damit Sie zusätzliche Daten sammeln können, ohne vorhandene Workflows zu unterbrechen.
-
Legen Sie in der Verwaltungskonsole den Grenzwert für die primäre API-Anforderungsrate auf einen hohen Wert fest, z. B. 25.000 Anforderungen pro Stunde. Weitere Informationen findest du unter Configuring rate limits (Konfigurieren von Ratenbegrenzungen).
-
Überwachen Sie nach dem Aktivieren von Rate Limits die Felder, die in den weitergeleiteten Protokollen angezeigt werden:
Feld Beschreibung gh.rate_limit.primary.maxMaximal zulässige Anforderungen gh.rate_limit.primary.remainingVerbleibende Anforderungen im aktuellen Zeitraum gh.rate_limit.primary.usedBereits im Zeitraum vorgenommene Anfragen gh.rate_limit.primary.resetUnix-Zeitstempel, wenn der Zinsgrenzwert zurückgesetzt wird
Schritt 4: Einschränken von Grenzwerten und Beheben der hohen Nutzung
Verwenden Sie die Daten aus den gh.rate_limit Feldern, um fundierte Entscheidungen zu treffen:
-
**Identifizieren Sie Benutzer, die sich dem Grenzwert nähern.** Suchen Sie Benutzer oder Integrationen, die sich häufig dem Schwellenwert nähern oder überschreiten. -
**Ermitteln Sie geeignete Grenzwerte.** Legen Sie Höchstwerte basierend auf beobachteten Nutzungstrends und nicht auf beliebigen Werten fest. -
**Kommunizieren Sie mit betroffenen Teams.** Arbeiten Sie mit Teams zusammen, um ihre API-Nutzung durch Techniken wie Anforderungsbatchierung, Antwortzwischenspeicherung und bedingte Anforderungen zu optimieren.
Schritt 5: Grenzen reduzieren und über die Zeit aufrechterhalten
Sobald Sie ein klares Bild der API-Nutzung haben, verringern Sie schrittweise den Satzgrenzwert, um die Kapazität und die tatsächlichen Nutzungsmuster Ihrer Instanz anzupassen. Überwachen Sie nach jeder Anpassung auf unbeabsichtigte Unterbrechungen.
Wenn Sie Grenzwerte verfeinern, arbeiten Sie mit Teams zusammen, deren Integrationen betroffen sind. Techniken wie Anforderungsbatchierung, Antwortzwischenspeicherung und bedingte Anforderungen können Teams dabei helfen, ihre API-Nutzung zu reduzieren. Sie können bestimmte Benutzer auch von Den ratenbeschränkungen ausnehmen, indem Sie das ghe-config Hilfsprogramm verwenden. Weitere Informationen findest du unter Befehlszeilenwerkzeuge.
Überprüfen Sie ihre Ratelimitdaten regelmäßig, da sich Nutzungsmuster ändern, wenn neue Integrationen hinzugefügt werden und Workflows weiterentwickelt werden.
Zusätzliche Überlegungen
-
**GraphQL-API-Grenzwerte.** Die GraphQL-API verfügt über einen separaten Satzgrenzwert (Standard: 5.000 Punkte pro Stunde), die nicht über die Ausnahmeliste umgangen werden können. Weitere Informationen findest du unter [AUTOTITLE](/graphql/overview/rate-limits-and-node-limits-for-the-graphql-api). -
**Sekundäre Zinslimits.** Sie können auch Sekundärratenlimits aktivieren, um das allgemeine Dienstniveau zu schützen. Weitere Informationen findest du unter [AUTOTITLE](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#enabling-secondary-rate-limits).
Weiterführende Lektüre
-
[AUTOTITLE](/rest/overview/rate-limits-for-the-rest-api)