Fehlerbehebung bei der BigQuery-Arbeitslastverwaltung

In diesem Dokument wird beschrieben, wie Sie häufige Probleme mit der BigQuery-Arbeitslastverwaltung beheben, einschließlich der Zuweisung und Zuweisungen von Reservierungen, Konfigurationsfehlern bei Reservierungen, Kapazitätszusicherungen, Slot-Konflikten und der Überwachung von Reservierungen.

Damit Sie Reservierungen, Zusicherungen und administrative Ressourcendiagramme ansehen und verwalten können, müssen Sie die erforderlichen IAM-Rollen (Identity and Access Management) für das Administrationsprojekt haben, z. B. die Rolle „BigQuery-Ressourcenbetrachter“ (roles/bigquery.resourceViewer) oder „BigQuery-Ressourcenadministrator“ (roles/bigquery.resourceAdmin). Weitere Informationen finden Sie unter Zugriffssteuerung mit IAM.

Probleme mit Reservierungen beheben

Anhand der folgenden Informationen können Sie häufige Probleme mit Reservierungen beheben, z. B. Fehler beim Hinzufügen von Slots, warum eine Reservierung nicht für einen BigQuery-Job verwendet wird oder nicht erkannte Reservierungen.

Der Reservierungsgröße können keine weiteren Slots hinzugefügt werden

Wenn beim Versuch, Ihrer Reservierung weitere Plätze hinzuzufügen, Fehler wie Failed to allocate slots for reservation in the current system state oder Failed to update reservation: Failed to allocate slots for reservation auftreten, handelt es sich in der Regel um ein vorübergehendes Problem. So beheben Sie das Problem:

  • Versuchen Sie es noch einmal mit einer geringeren Anzahl von Slots.
  • Wenn der Versuch mit einer kleineren Anzahl von Slots fehlschlägt, warten Sie 15 Minuten und wiederholen Sie den Vorgang.

Wenn Sie den Vorgang mehrmals wiederholt und 30 Minuten gewartet haben und weiterhin derselbe Fehler angezeigt wird, wenden Sie sich an Cloud Customer Care.

Das Kontingent reicht nicht aus, um diese Anfrage zu bearbeiten.

Wenn in der Fehlermeldung There is insufficient quota to complete this request angegeben ist, überschreitet die Anfrage das für das Projekt festgelegte Kontingentlimit.

Führen Sie einen der folgenden Schritte aus, um diesen Fehler zu beheben:

  • Fügen Sie der Reservierung eine kleinere Anzahl von Slots hinzu, damit die Anfrage das Kontingentlimit nicht überschreitet.
  • Fordern Sie eine Kontingenterhöhung in der entsprechenden Region an. Weitere Informationen finden Sie unter Kontingenterhöhung anfordern.

Reservierung wird von BigQuery nicht zum Ausführen eines Jobs verwendet

Es gibt mehrere Szenarien, in denen ein Job mit On-Demand-Preisen oder einem kostenlosen freigegebenen Slot-Pool ausgeführt wird, anstatt die von Ihnen erstellte Reservierung zu verwenden.

Anfrage und Reservierung befinden sich in verschiedenen Regionen

Reservierungen sind regionale Ressourcen. Eine Abfrage wird am selben Standort wie alle in der Abfrage referenzierten Tabellen ausgeführt.

Wenn der Standort einer Tabelle nicht mit dem Standort der Reservierung übereinstimmt, wird die Reservierung nicht für die Abfrage verwendet. Stattdessen wird die Abfrage zu On-Demand-Preisen ausgeführt (oder mit dem kostenlosen gemeinsam genutzten Slot-Pool für infrage kommende Batch-Lade- und ‑Exportjobs).

BigQuery Omni-Tabellen abfragen

Wenn Sie eine BigQuery Omni-Tabelle abfragen, müssen Sie die Reservierung in derselben Region wie die Tabelle erstellen, nicht in einer colocated Region. Wenn Sie die Reservierung in der gemeinsam genutzten BigQuery-Region erstellen, wird die Abfrage mit On-Demand-Preisen ausgeführt.

Die Reservierung wurde erstellt, aber das Projekt wurde ihr nicht zugewiesen

Damit Sie die Slots in einer Reservierung verwenden können, müssen Sie eine Zuweisung erstellen, mit der das Projekt, der Ordner oder die Organisation der jeweiligen Reservierung zugewiesen wird. Achten Sie darauf, dass das Projekt eine entsprechende Zuweisung für die Reservierung hat.

Art der Dienstleistung stimmt nicht überein

Achten Sie darauf, dass Sie beim Erstellen einer Zuweisung den richtigen Jobtyp auswählen. Andernfalls werden die Jobs nicht für die Reservierung verwendet.

Wenn Sie beispielsweise PIPELINE als Art der Dienstleistung auswählen, werden alle Abfragejobs mit On-Demand-Preisen ausgeführt. Ändern Sie den Zuweisungstyp in QUERY, damit die Abfragejobs mit der Reservierung ausgeführt werden.

Abfragen mit mehreren Anweisungen

Wenn Sie Abfragen mit mehreren Anweisungen ausführen, ist dem übergeordneten Jobobjekt keine Reservierung zugeordnet, auch wenn die untergeordneten Jobs unter einer Reservierung ausgeführt werden.

Wenn Sie prüfen möchten, ob für den Job tatsächlich eine Reservierung verwendet wurde, sehen Sie sich die Metadaten des untergeordneten Jobs an.

Im Cache gespeicherte Ergebnisse abrufen

Wenn ein Abfragejob im Cache gespeicherte Ergebnisse abruft, ist das Reservierungsfeld leer, da BigQuery keine Berechnungen durchführt und die Ergebnisse direkt aus der temporären Tabelle abruft.

Change Data Capture-Vorgänge zur Zeilenänderung

Wenn Sie CDC-Tabellen (Change Data Capture) haben, wendet BigQuery ausstehende Zeilenänderungen innerhalb des max_staleness-Intervalls als Hintergrundjobs an, die den Zuweisungstyp BACKGROUND verwenden. Wenn es keine BACKGROUND-Zuweisungen gibt, wird für diese Jobs die On-Demand-Preisgestaltung verwendet. Erstellen Sie für das Projekt eine BACKGROUND-Zuweisung, um unerwartete On-Demand-Kosten zu vermeiden. Sie erkennen diese Jobs am Substring queueworker_cdc_background_merge_coalesce in der Job-ID.

BigQuery ML-Modelltypen, die externe Dienste verwenden

Wenn im Projekt keine Reservierungszuweisung mit der Art der Dienstleistung ML_EXTERNAL gefunden wird, werden externe Modellerstellungsjobs mit On-Demand-Preisen ausgeführt. Die Zuweisung der Art der Dienstleistung QUERY gilt für Standard-BigQuery ML-Modelle und Matrixfaktorisierungsmodelle (für die eine Reservierung der Enterprise- oder Enterprise Plus-Version erforderlich ist), während für externe Modelle eine Zuweisung vom Typ ML_EXTERNAL erforderlich ist. Weitere Informationen finden Sie unter BigQuery-Arbeitslasten Slots zuweisen.

Nicht erkannte Reservierungen im Projekt

BigQuery besitzt Reservierungen, die einen kostenlosen gemeinsamen Slotpool für bestimmte Vorgänge in BigQuery darstellen.

default-pipeline

Standardmäßig wird beim Batch-Laden oder ‑Exportieren von Daten in BigQuery ein kostenloser Pool mit gemeinsam genutzten Slots verwendet. Wenn Sie diese Lade- oder Extraktionsjobs untersuchen, wird im Feld „Reservierung“ default-pipeline angezeigt.

Für die Verwendung des Pools für freigegebene Slots fallen keine Gebühren an. Wenn Sie eine konsistente, vorhersagbare Leistung wünschen, sollten Sie eine PIPELINE-Reservierung erwerben.

Fehlerbehebung bei Aufgaben zur Reservierungsverwaltung

Beim Erstellen oder Aktualisieren einer Reservierung können die folgenden Fehler auftreten.

Die Reservierungsgröße oder die Anzahl der Referenzslots muss ein Vielfaches von 50 sein.

Fehlermeldung

  • Max reservation size can only be configured in multiples of 50, except when covered by excess commitments.
  • Baseline slots can only be configured in multiples of 50, except when covered by excess commitments.

Ursache

Slots werden immer automatisch auf ein Vielfaches von 50 skaliert. BigQuery skaliert Slots basierend auf der tatsächlichen Nutzung und rundet auf die nächste 50-Slot-Schrittweite auf. Wenn keine Zusicherung vorhanden ist oder die Zusicherung die Erhöhungen nicht abdecken kann, können Sie die Referenz- und Autoscaling-Slots nur in Vielfachen von 50 erhöhen.

Wenn baseline slots oder max reservation size - baseline slots kein Vielfaches von 50 ist (und nicht durch Zusicherungen für überschüssige Kapazität abgedeckt wird), kann die Reservierung nicht auf die maximale Reservierungsgröße skaliert werden. Dies führt zu diesem Fehler.

Lösung

Führen Sie einen der folgenden Schritte aus:

  • Erwerben Sie weitere Kapazitätszusicherungen, um die zusätzlichen Slots abzudecken.
  • Wählen Sie Basis- und maximale Slots in Schritten von 50 aus.

Fehlerbehebung bei Kapazitätszusicherungen

In diesem Abschnitt werden Schritte zur Fehlerbehebung beschrieben, die bei Problemen mit BigQuery-Kapazitätszusicherungen hilfreich sein können.

Erworbene Slots stehen aus

Slots unterliegen der verfügbaren Kapazität. Wenn Sie Slot-Zusicherungen erwerben und BigQuery diese zuweist, wird in der Spalte Status ein Häkchen angezeigt. Wenn BigQuery die angeforderten Slots nicht sofort zuweisen kann, bleibt die Spalte Status auf „Ausstehend“. Es kann einige Stunden dauern, bis die Slots verfügbar sind. Wenn Sie früher Zugriff auf Slots benötigen, versuchen Sie Folgendes:

  1. Löschen Sie die ausstehende Zusicherung.
  2. Erwerben Sie eine neue Zusicherung für eine kleinere Anzahl von Slots. Je nach Kapazität wird die kleinere Zusicherung möglicherweise sofort aktiviert.
  3. Erwerben Sie die übrigen Slots als separate Zusicherung. Diese Slots werden in der Spalte Status möglicherweise als „Ausstehend“ angezeigt, sind aber in der Regel innerhalb weniger Stunden aktiv.
  4. Optional: Wenn beide Zusicherungen aktiv werden, können Sie sie zusammenführen, sofern beide Zusicherungen in derselben Region und Edition sind und denselben Zusicherungsplan haben.

Wenn eine Slot-Zusicherung fehlschlägt oder lange dauert, sollten Sie vorübergehend On-Demand-Preise verwenden. Mit dieser Lösung können Sie kritische Abfragen in einem anderen Projekt ausführen, das keiner Reservierung zugewiesen ist, das Projekt None zuweisen oder die Projektzuweisung ganz entfernen.

Slot-Konflikte beheben

Slotkonflikte können auftreten, wenn nicht genügend Slots zum Ausführen aller Ihrer Jobs vorhanden sind. Dies kann zu Leistungsproblemen führen. Wenn Sie analysieren möchten, ob die Leistungseinbußen auf eine Zunahme der Arbeitslast oder auf Änderungen an der Umgebungskonfiguration zurückzuführen sind, können Sie zwei Systemintervalle über Reservierungen und Projekte hinweg vergleichen.

Mit den folgenden Schritten und Best Practices können Sie Probleme mit der Slot-Konkurrenz beheben.

Wenn Sie diese Best Practices ausprobiert haben, aber weiterhin Probleme mit der Jobleistung auftreten, können Sie Support anfordern.

Spitzen bei der Jobnebenläufigkeit

Verwenden Sie die Detailansicht in den Diagrammen zu administrativen Ressourcen, um nach einem plötzlichen Anstieg der Jobausführungen mit gleichzeitigen Spitzen bei der Slot-Nutzung zu suchen. Diese Spitzen können darauf hindeuten, dass zu viele Jobs um die in Ihrer Reservierung verfügbaren Slots konkurrieren.

Best Practice:Optimieren Sie ressourcenintensive Abfragen oder erhöhen Sie die Slot-Kapazität Ihrer Reservierung. Weitere Informationen zur Optimierung der Abfrageleistung finden Sie unter Abfrageberechnung optimieren.

Hohe Slot-Nutzung

Verwenden Sie die Detailansicht, um nach längeren Joblaufzeiten zu suchen, insbesondere wenn es Jobs gibt, die die maximale Kapazität Ihrer Reservierung überschreiten. Eine gleichbleibend hohe Slotnutzung kann auf einen anhaltenden Slotkonflikt hinweisen.

Best Practice:Prüfen Sie Abfragen mit dem Filter für Slot-Konflikte im Job-Explorer, um die Abfragen zu ermitteln, die die meisten Slots belegen, und optimieren Sie sie.

Lange Jobdauern

Wenn die Ausführung von Jobs deutlich länger dauert, sehen Sie sich die Detailansicht an. Eine hohe Job-Nebenläufigkeit und Spitzen bei der Slotnutzung können auf Slot-Konflikte hinweisen.

Best Practice:Isolieren Sie kritische Jobs, indem Sie weniger wichtige Jobs vorübergehend pausieren oder die Gesamtrate der Jobübermittlung reduzieren.

Meldungen zu Slot-Konflikten

In der Tabelle mit Statistiken können Meldungen wie There were NUMBER jobs detected with slot_contention in the reservation. angezeigt werden, die auf Probleme mit der Slot-Konkurrenz hinweisen. Im Job-Explorer finden Sie Details zu den in diesen Nachrichten gekennzeichneten Jobs.

Best Practice:Optimieren Sie die ermittelten Abfragen oder passen Sie die Slotzuweisung Ihrer Reservierung an.

Fehlerbehebung für das Monitoring von Reservierungen

In den folgenden Abschnitten wird beschrieben, wie Sie häufige Probleme bei der Überwachung von BigQuery-Reservierungen und der Slot-Nutzung beheben können.

Messwerte zur Slot-Nutzung stimmen nicht mit INFORMATION_SCHEMA überein

Wenn Sie Abweichungen zwischen den Messwerten zur Slot-Nutzung in Ressourcendiagrammen und INFORMATION_SCHEMA-Daten feststellen, versuchen Sie Folgendes:

  • Detaillierungsgrad reduzieren: Ändern Sie den Detaillierungsgrad des Diagramms von 1-Stunden-Intervallen in 1-Sekunden-Intervalle.
  • Aggregation anpassen: Achten Sie darauf, dass die Aggregationsmethoden in Ressourcen- und INFORMATION_SCHEMA-Daten übereinstimmen. Wenn Sie beispielsweise die Spitzenlast in Ressourcendiagrammen besser darstellen möchten, ändern Sie die Messwertaggregation einheitlich in p99 oder p90.

Geliehene Slots werden angezeigt, wenn inaktive Slots deaktiviert sind

In Ihren Monitoring-Diagrammen wird möglicherweise ein Wert ungleich null für borrowed_slots angezeigt, auch wenn ignore_idle_slots=true für eine oder mehrere Reservierungen festgelegt ist. Mit dieser Einstellung wird verhindert, dass eine Reservierung inaktive Slots ausleiht. Sie kann jedoch ihre nicht verwendeten Slots an andere Reservierungen verleihen.

Diese geliehenen Slots werden in den folgenden Fällen angezeigt:

  • Ausleihen an andere Reservierungen: Eine Reservierung mit ignore_idle_slots=true kann ihre ungenutzten Referenz-Slots an andere Reservierungen im selben Administrationsprojekt, in derselben Region und in derselben Version ausleihen, die das Ausleihen inaktiver Slots zulassen (ignore_idle_slots=false). Wenn alle Reservierungen in einem Administrationsprojekt, einer Region und einer Version ignore_idle_slots=true haben, werden inaktive Slots nicht zwischen ihnen geteilt.

    Angenommen, Reservierung A hat 100 Slots, 0 Nutzung und ist mit ignore_idle_slots=true konfiguriert. Reservierung B befindet sich im selben Verwaltungsprojekt, in derselben Region und in derselben Edition, hat 100 Slots, benötigt 150 Slots für ihren Arbeitslast und ist mit ignore_idle_slots=false konfiguriert. Reservierung B kann 50 inaktive Slots von Reservierung A übernehmen, um ihren Bedarf zu decken. In diesem Fall werden in den Monitoring-Diagrammen 50 lent_slots für Reservierung A und 50 borrowed_slots für Reservierung B angezeigt.

  • Die Nutzung überschreitet die Kapazität. Wenn die Slotnutzung einer Reservierung die Kapazität (Baseline + Autoscaling-Slots) vorübergehend überschreitet, wird diese Differenz in den Monitoring-Diagrammen als borrowed_slots dargestellt. Dieses Verhalten kann auch bei Reservierungen mit ignore_idle_slots=true auftreten.

Die Slot-Nutzung kann gelegentlich die Summe Ihrer Referenz plus der skalierten Slots überschreiten. Ihnen wird keine Slot-Nutzung in Rechnung gestellt, die über Ihrer Referenz liegt, plus die skalierten Slots.

Geliehene Slots werden angezeigt, bevor eine Reservierung vollständig genutzt wird

In Monitoring-Dashboards werden Stichprobendaten verwendet, die möglicherweise nicht die genaue Zeit der Slot-Nutzung innerhalb eines Stichprobenintervalls widerspiegeln.

Für eine genauere Analyse der Slot-Nutzung können Sie Spalten im Zusammenhang mit inaktiven Slots abfragen, z. B. die Spalten borrowed_slots und lent_slots in der INFORMATION_SCHEMA.RESERVATIONS_TIMELINE-Ansicht.

Nächste Schritte