Nutzungsbeschränkungen für Google Maps APIs-Webdienste

Diese Seite richtet sich ausschließlich an Kunden mit einer früheren Maps APIs for Work- oder Maps API for Business-Lizenz. Diese Seite hat keine Gültigkeit für Kunden mit dem neuen Google Maps APIs Premium Plan, der ab Januar 2016 erhältlich ist.

Dezember 2011

Die Nutzung der Google Maps APIs-Webdienste unterliegt bestimmten Grenzwerten hinsichtlich der Menge an Anforderungen in einem Zeitraum von 24 Stunden. Wenn die Anzahl der gesendeten Anforderungen diese Grenzwerte überschreitet, führt dies zu Fehlermeldungen.

Die Nutzungsbeschränkungen sind in den FAQ zu früheren Google Maps APIs for Work-Lizenzen dokumentiert.

Dieser Artikel richtet sich an Google Maps APIs for Work-Kunden, die diese Grenzwerte erreichen und Anwendungen möglicherweise optimieren müssen, um die Webdienste effizienter zu nutzen.

Grundlagen

Google Maps stellt Webdienste als Schnittstelle zum Anfordern von Google-Kartendaten zur Verfügung, die in Ihren Anwendungen verwendet werden. Diese Dienste können nur in Verbindung mit einer Google-Karte genutzt werden. Die Verwendung von Daten aus diesen Diensten ist untersagt, sofern sie nicht auf einer Google-Karte angezeigt werden. Sämtliche Details finden Sie in den Nutzungsbedingungen und Lizenzbeschränkungen für die Google Maps APIs.

Es gibt zwei Kontingenttypen für Nutzungsbeschränkungen von Google Maps APIs-Webdiensten: langfristige Kontingente (Tageskontingente) und kurzfristige Kontingente (Anforderungskontingente). Sollten Sie die Tagesbeschränkung überschreiten oder den Dienst anderweitig missbrauchen, wird vom Webdienst eine bestimmte Fehlermeldung zurückgegeben. Falls Sie die Beschränkungen weiterhin überschreiten, kann Ihr Zugang zum Webdienst ggf. gesperrt werden. Es ist auch möglich, dass Sie Antworten vom Typ „403 Forbidden“ erhalten.

Hinweis: Für clientseitige APIs gelten andere Grenzwerte. Für die Maps JavaScript API gilt eine Beschränkung pro Kartensitzung, sodass die Anforderungen auf die Nutzer verteilt werden. Auf diese Weise kann die browserbasierte Nutzung mit zunehmender Nutzeranzahl skaliert werden. Informationen dazu, wie Sie zwischen serverseitigen Webdiensten und ihrem clientseitigen Äquivalent wählen, finden Sie im Thema über Geocoding-Strategien.

Probleme

Die für Google Maps APIs-Webdienste geltenden Nutzungsbeschränkungen können wie folgt überschritten werden:

  • Pro Tag werden zu viele Anforderungen gesendet.
  • Anforderungen werden zu schnell gesendet, also zu viele Anforderungen pro Sekunde.
  • Anforderungen werden über einen längeren Zeitraum zu schnell gesendet, oder der Webdienst wird anderweitig missbräuchlich eingesetzt.
  • Andere Nutzungsbeschränkungen werden überschritten, z. B. Punkte pro Anforderung in der Google Maps Elevation API.

Überschrittene Nutzungsbeschränkungen

Bei einer Überschreitung der Nutzungsbeschränkungen erhalten Sie den Statuscode OVER_QUERY_LIMIT als Antwort.

Das heißt, dass vom Webdienst nun keine „normalen“ Antworten mehr zurückgegeben werden. Stattdessen erhalten Sie nur noch den Statuscode OVER_QUERY_LIMIT, bis die Nutzungsbeschränkung wieder aufgehoben ist. Das kann folgendermaßen geschehen:

  • Innerhalb von einigen Sekunden, sofern der Fehler entstanden ist, weil von der Anwendung zu viele Anforderungen pro Sekunde gesendet wurden.
  • Innerhalb der nächsten 24 Stunden, sofern der Fehler entstanden ist, weil von der Anwendung zu viele Anforderungen pro Tag gesendet wurden. Die Tageskontingente werden um Mitternacht (Pacific Standard Time) zurückgesetzt.

Dieser Screencast bietet Schrittanweisungen über die ordnungsgemäße Anforderungsbegrenzung und Fehlerbehandlung für alle Webdienste.

Bei einer Antwort mit dem Statuscode OVER_QUERY_LIMIT sollte Ihre Anwendung ermitteln, welche Nutzungsbeschränkung überschritten wurde. Dies kann geschehen, indem eine Pause von 2 Sekunden eingelegt und dann dieselbe Anforderung erneut gesendet wird. Wenn der Statuscode weiterhin OVER_QUERY_LIMIT ist, sendet Ihre Anwendung zu viele Anforderungen pro Tag. Andernfalls sendet Ihre Anwendung zu viele Anforderungen pro Sekunde.

Nachfolgend finden Sie ein Beispiel für eine Implementierung in Python:

url = "MAPS_API_WEBSERVICE_URL"
attempts = 0
success = False

while success != True and attempts < 3:
  raw_result = urllib.urlopen(url).read()
  attempts += 1
  # The GetStatus function parses the answer and returns the status code
  # This function is out of the scope of this example (you can use a SDK).
  status = GetStatus(raw_result)
  if status == "OVER_QUERY_LIMIT":
    time.sleep(2)
    # retry
    continue
  success = True

if attempts == 3:
  # send an alert as this means that the daily limit has been reached
  print "Daily limit has been reached"

Hinweis: In folgenden Fällen kann der Fehler OVER_QUERY_LIMIT ebenfalls generiert werden:

Vor dem Senden von Anforderungen sollte in Anwendungen sichergestellt werden, dass diese Grenzwerte nicht erreicht werden.

Antwort „HTTP 403“

Bei Anforderungen an die Webdienste kann auch ein Fehler HTTP 403 (Forbidden) ausgegeben werden. In den meisten Fällen ist der Grund hierfür eine ungültige URL-Signatur. Um dies zu überprüfen, entfernen Sie die Parameter client und signature und versuchen Sie es dann erneut:

  • Wenn die Antwort HTTP 200 (OK) lautet, war die Signatur das Problem.
    Dies steht nicht im Zusammenhang mit Nutzungsbeschränkungen. Nähere Informationen finden Sie unter Behandlung von Authentifizierungsproblemen im Kapitel Webdienste der Dokumentation zu Google Maps APIs for Work.
  • Wenn die Antwort weiterhin ein Fehler HTTP 403 (Forbidden) ist, war die Signatur nicht notwendigerweise das Problem. Es kann sich um ein Problem im Zusammenhang mit Nutzungsbeschränkungen handeln.
    Das bedeutet in der Regel, dass Ihr Zugang zum Webdienst gesperrt wurde. Grundlage hierfür kann sein, dass die Anwendung die Nutzungsbeschränkungen für zu lange Zeit überschritten oder den Webdienst anderweitig missbraucht hat. Wenn dieses Problem auftritt, erhalten Sie Hilfe im Google Cloud Support Portal. Auf der Seite Support und Ressourcen finden Sie darüber hinaus entsprechende Kontaktdaten.

Für alle Anforderungen an Webdienste sind URL-Signaturen erforderlich. Anforderungen werden auch mit einem Fehler HTTP 403 (Forbidden) zurückgewiesen, wenn der Parameter client enthalten ist, der Parameter signature aber fehlt, oder umgekehrt.

Lösungen

Die obigen Probleme können mit einer Kombination von zwei Vorgehensweisen behoben werden:

  1. Senken der Nutzung, indem Sie Anwendungen für eine effizientere Nutzung der Webdienste optimieren
  2. Erhöhen der Kontingente (sofern möglich) durch Erwerb eines zusätzlichen Guthabens für Ihre Google Maps APIs for Work-Lizenz

Dieser Artikel konzentriert sich auf Wege, mit denen Anwendungen so optimiert werden können, dass sie Webdienste effizienter nutzen.

Integritätsprüfungen

Bevor wir näher darauf eingehen, wie sich ein Webdienst effizienter nutzen lässt, sollten Sie zunächst prüfen, ob der richtige Dienst und die richtige Lizenz verwendet werden.

Anwendungsfall überprüfen

Google Maps APIs-Webdienste eignen sich am besten für Anwendungen, bei denen keine Eingabe in Echtzeit durch Endnutzer erfolgt oder bei denen kein Webbrowser verfügbar ist. Dies ist in der Regel der Fall, wenn Sie ein Dataset erhalten, das unabhängig von einer Nutzereingabe ist. Angenommen, Sie haben eine Datenbank mit einem festen Satz von Adressen, die geocodiert werden müssen. Dies können beispielsweise mehrere Gebäude sein, die auf einer Immobilien-Website zum Kauf angeboten werden, oder eine Reihe von Geschäftsfilialen.

Bei Verwendung der Google Maps APIs-Webdienste werden alle Anforderungen (täglich und pro Sekunde) auf das Kontingent Ihrer Client-ID angerechnet. Es handelt sich dabei um ein globales Kontingent für jede Client-ID, unabhängig davon, von wie vielen IP-Adressen die Anforderungen gesendet wurden.

Für die Verwendung von clientseitigen Maps JavaScript API-Diensten im Browser besteht eine Beschränkung pro Kartensitzung. Das bedeutet, dass Anforderungen auf alle Nutzer verteilt und bei wachsender Nutzeranzahl skaliert werden. Clientseitige APIs werden daher stets bevorzugt und verwendet, wann immer dies möglich ist. Sie sind die beste Wahl, wenn Sie Adressen von Nutzern erfassen, die in Echtzeit geocodiert werden müssen. Dies ist beispielsweise bei der Durchführung einer Suche nach Geschäften in der Nähe der Wohnadresse des Nutzers der Fall.

Eine eingehendere Erläuterung dieses Themas finden Sie im Dokument zu Geocoding-Strategien. Obwohl sie speziell für Geocoding verfasst wurden, gelten die Empfehlungen in diesem Dokument für alle Webdienste. Darin wird erläutert, wann Sie serverseitige und wann clientseitige Webdienste verwenden sollten.

Google Maps APIs for Work-Lizenz

Wenn Sie eine Google Maps APIs for Work-Lizenz besitzen, müssen Sie sicherstellen, dass Ihre Anforderungen Ihre korrekte Client-ID enthalten.

Google Maps APIs for Work-Kunden erhalten höhere Kontingente für Google Maps APIs-Webdienste als Nutzer kostenfreier APIs. Um davon profitieren zu können, muss für Ihre Anwendungen der Parameter client korrekt festgelegt werden (siehe Kapitel Webdienste im Paket in diesem Leitfaden).

Anwendungen ohne korrekt verwendete Google Maps APIs for Work-Client-ID werden nicht als „Business“ behandelt, profitieren nicht von Business-Funktionen und -Guthaben, sind nicht durch das SLA für Google Maps APIs for Work abgedeckt, sind nicht zum Erhalt von technischem Support berechtigt und unterliegen den regulären Nutzungsbedingungen und Lizenzbeschränkungen für die Google Maps APIs.

Optimierung

Eine effizientere Nutzung der Webdienste kann im Wesentlichen auf zwei Arten erzielt werden: Senkung der Nutzung, indem Anfragen nur dann gesendet werden, wenn dies wirklich erforderlich ist, und gleichmäßige Verteilung der Nutzung, damit die Grenzwerte nicht überschritten werden.

Ergebnisse zwischenspeichern

In Abschnitt 10.5.d der Nutzungsbedingungen für die Google Maps APIs ist Folgendes festgelegt: Begrenzte Mengen von Inhalten dürfen ausschließlich zur Verbesserung der Leistung Ihrer Google Maps APIs-Implementierung bedingt durch Netzwerklatenz gespeichert werden (und nicht um die ordnungsgemäße Erfassung der Nutzung durch Google zu unterbinden) und wenn für die Speicherung Folgendes zutrifft: sie ist temporär (niemals mehr als 30 Kalendertage), sie ist sicher, es werden keine Inhalts- oder Dienstkomponenten manipuliert oder zusammengefasst und Zuordnungen werden in keiner Weise geändert.

Das bedeutet, Sie können Webdienstantworten temporär zwischenspeichern, um zu verhindern, dass in kurzen zeitlichen Abständen doppelte Anforderungen gesendet werden. Antworten von Webdiensten enthalten immer den HTTP-Header Cache-Control, um anzugeben, wie lange das Ergebnis zwischengespeichert werden kann. Zurzeit sind dies 24 Stunden:

Cache-Control: public, max-age=86400

Dieser Header muss stets eingehalten werden. Caching kann mithilfe von Webproxys entweder mit einem Out-of-the-Box-Ansatz oder mit Ihrer eigenen Implementierung implementiert werden. Zu erwähnen ist außerdem, dass HTTP-Antworten auch von einigen HTTP-Clientbibliotheken zwischengespeichert werden.

Zur Erhöhung der Cache-Trefferraten sollten LatLng-Koordinaten durch Rundung auf 6 Dezimalstellen normalisiert werden. Dadurch wird eine Genauigkeit von ca. 11 Zentimetern rund um den Äquator erzielt. Ergebnisse von Webdiensten fallen nicht unterschiedlich aus, wenn mehrere Dezimalstellen hinzugefügt werden. Dies führt jedoch zu einer Senkung der Trefferraten.

Anforderungen begrenzen

Anforderungen in Anwendungen sollten begrenzt werden, um ein Überschreiten der Kontingente zu verhindern. Dabei sollte berücksichtigt werden, dass dies für jede Client-ID gilt, unabhängig davon, von wie vielen IP-Adressen die Anforderungen gesendet werden.

Sie können Anforderungen begrenzen, indem Sie sie durch eine Warteschlange leiten, durch die überprüft wird, wann Anforderungen gesendet werden. Bei einer Begrenzung auf 10 QPS (Abfragen pro Sekunde, Queries per Second) muss Ihre Anwendung beim Senden der 11. Anforderung den Zeitstempel der ersten Anforderung prüfen und warten, bis 1 Sekunde verstrichen ist. Die gleiche Vorgehensweise sollte auf tägliche Grenzwerte angewendet werden.

Auch bei korrekter Implementierung einer Anforderungsbegrenzung sollte in Anwendungen auf Antworten mit dem Statuscode OVER_QUERY_LIMIT geachtet werden. Geht eine solche Antwort ein, verwenden Sie den im obigen Abschnitt Überschrittene Nutzungsbeschränkungen erläuterten Mechanismus zum Anhalten und Wiederholen, um zu ermitteln, welcher Grenzwert überschritten wurde.

Umgang mit Backlogs

Wenn die Anforderungsbegrenzung korrekt implementiert ist, werden bei Überschreiten der Nutzungsbeschränkungen keine Anforderungen an Webdienste gesendet. Es kann jedoch vorkommen, dass Anwendungen Eingaben in größerem Umfang oder mit höheren Geschwindigkeiten erhalten, als aufgrund der Nutzungsbeschränkungen für die Webdienste zulässig ist. Dies kann zur Folge haben, dass die Wartenschlangen zur Anforderungsbegrenzung erheblich anwachsen, sodass ein Backlog mit ausstehenden Anforderungen entsteht.

Während der Verarbeitung eines umfangreichen Backlogs werden möglicherweise die täglichen Nutzungsbeschränkungen Ihrer Anwendungen erreicht. Ist die Anwendungssteuerung für die Tagesbeschränkungen korrekt implementiert, senden Anwendungen dann keine Anforderungen mehr. Das Senden zusätzlicher Anforderungen hat ansonsten Antworten mit dem Statuscode OVER_QUERY_LIMIT zur Folge. In beiden Fällen wird das Backlog nicht verkleinert.

Wenn der durchschnittliche Umfang der Anforderungen im Verlauf eines ganzen Tags oder einer Woche weiterhin unterhalb der Nutzungsbeschränkung liegt, sollten Ihre Anwendungen in Zeiträumen mit weniger Eingaben das Backlog abarbeiten können. Andernfalls müssen Sie das tägliche Guthaben für Ihre Google Maps APIs for Work-Lizenz erhöhen (siehe nächster Abschnitt).

Wenn Optimierung nicht ausreicht

Wenn alle oben genannten Optimierungsmaßnahmen bereits umgesetzt sind und Ihr Backlog mit Anforderungen weiterhin beständig wächst, und zwar entweder auf täglicher Basis oder zu jedem Zeitpunkt während eines Tags, müssen Sie möglicherweise die Nutzungsbeschränkung pro Tag oder pro Sekunde für Ihre Google Maps APIs for Work-Lizenz erhöhen. Wenden Sie sich in diesem Fall an Ihren Google Maps APIs for Work Account Manager, um die verfügbaren Optionen zu erörtern.