Lexikon · Q

Queue Depth (Warteschlangentiefe)

Die Zahl der Nachrichten, Jobs oder Requests, die zu einem Zeitpunkt in einer Warteschlange auf Verarbeitung warten.

Von Obseria-RedaktionAktualisiert

Definition

Queue Depth (Warteschlangentiefe) ist die Anzahl der Elemente, etwa Nachrichten, Jobs, Requests oder I/O-Operationen, die zu einem Zeitpunkt in einer Warteschlange warten. Zusammen mit der Ankunfts- oder Abarbeitungsrate zeigt sie, wie lange neue Arbeit wartet. Eine stetig wachsende Queue Depth bedeutet, dass die Consumer mit den Producern nicht mithalten.

Was ist Queue Depth?

Queue Depth, auf Deutsch Warteschlangentiefe oder Warteschlangenlänge, ist die Zahl der Elemente, die in einer Queue auf ihre Verarbeitung warten. Das können Nachrichten in Kafka, RabbitMQ oder Amazon SQS sein, Jobs in einer Worker-Queue, Requests, die auf einen freien Thread warten, oder I/O-Operationen vor einem Datenträger. Überall dort, wo ein Puffer Producer und Consumer entkoppelt, ist die Queue Depth das direkteste Maß dafür, wie weit die Verarbeitung hinterherhinkt.

Im Sinne der Golden Signals ist Queue Depth ein Signal für Sättigung: Eine Queue, die meist fast leer ist, bedeutet freie Kapazität. Eine wachsende Queue bedeutet, dass mehr Arbeit ankommt, als verarbeitet werden kann.

Queue Depth und Wartezeit: Little's Law

Den Zusammenhang zwischen Warteschlangentiefe und Wartezeit beschreibt Little's Law aus der Warteschlangentheorie:

L = λ × W

L = mittlere Anzahl Elemente im System (Queue Depth)
λ = mittlere Ankunftsrate (Elemente pro Sekunde)
W = mittlere Verweildauer eines Elements im System

Das Gesetz gilt für jedes stabile System über einen ausreichend langen Zeitraum, unabhängig von der Verteilung der Ankünfte. Umgestellt zu W = L / λ übersetzt es eine Queue Depth in eine erwartete Wartezeit. Im eingeschwungenen Zustand entspricht die Ankunftsrate der Abgangsrate, Sie können also auch den Durchsatz der Consumer verwenden.

Ein illustratives Beispiel: In einer Queue liegen 12.000 Nachrichten, die Consumer verarbeiten 400 Nachrichten pro Sekunde. Neue Nachrichten warten also etwa 12.000 / 400 = 30 Sekunden, bis sie abgeholt werden. Liegt Ihr End-to-End-Ziel bei 10 Sekunden, brauchen Sie den dreifachen Durchsatz oder einen kleineren Rückstau.

Warum Queues nahe der Kapazitätsgrenze so schnell wachsen

Die Warteschlangentheorie erklärt auch, warum Rückstaus plötzlich entstehen. Nähert sich die Auslastung der Consumer 100 Prozent, steigt die mittlere Wartezeit nicht linear, sondern steil an: Im einfachen M/M/1-Modell beträgt die erwartete Verweildauer 1 / (μ − λ), wobei μ die Bedienrate ist. Der Schritt von 80 auf 95 Prozent Auslastung vervierfacht die Wartezeit ungefähr. Liegt die Ankunftsrate längere Zeit über der Bedienrate, wächst die Queue unbegrenzt. Deshalb kann ein System, das bei 80 Prozent unauffällig wirkt, nach einem moderaten Traffic-Anstieg weit zurückfallen.

Was Sie messen sollten

MetrikAussageBeispiele
Queue Depth / BacklogWie viel Arbeit wartetSQS ApproximateNumberOfMessagesVisible, RabbitMQ Ready Messages
Consumer LagWie weit Consumer hinter dem neuesten Offset liegenKafka-Lag pro Partition und Consumer Group
Alter des ältesten ElementsWie lange das ungünstigste Element bereits wartetSQS ApproximateAgeOfOldestMessage
Ankunfts- und AbarbeitungsrateOb der Rückstau wächst oder schrumpftEingehende vs. bestätigte Nachrichten pro Sekunde
Tiefe der Dead-Letter-QueueWie viele Elemente endgültig fehlgeschlagen sindAnzahl Nachrichten in der DLQ

Die Tiefe allein ist mehrdeutig: 50.000 Nachrichten sind harmlos für eine Consumer Group, die 20.000 pro Sekunde abarbeitet, und kritisch für eine, die 50 schafft. Lesen Sie die Tiefe deshalb immer zusammen mit der Abarbeitungsrate oder dem Alter der ältesten Nachricht.

Alerting und Autoscaling auf Basis der Queue Depth

  • Auf Zeit alarmieren, nicht auf Anzahl. Das Alter der ältesten Nachricht oder die geschätzte Wartezeit (Tiefe / Abarbeitungsrate) entspricht direkt der Nutzerauswirkung und Ihrem SLO.
  • Auf den Trend alarmieren. Ein Rückstau, der seit 15 Minuten kontinuierlich wächst, ist aussagekräftiger als eine kurze Spitze nach einem Burst.
  • Consumer nach Backlog skalieren. Werkzeuge wie KEDA in Kubernetes skalieren Worker nach Queue-Länge oder Consumer Lag. Teilen Sie den Backlog durch den Durchsatz pro Worker, um die Ziel-Replica-Zahl zu erhalten.
  • Downstream-Grenzen beachten. Mehr Consumer erhöhen die Last auf Datenbank oder API, in die sie schreiben. Skalieren Sie nur im Rahmen der langsamsten Abhängigkeit.
  • Die Queue begrenzen. Unbegrenzte Queues verbergen Überlast, bis der Speicher voll ist. Eine begrenzte Queue mit Backpressure oder Rate Limiting scheitert sichtbar und früh.

Typische Fehler

  • Eine tiefe Queue als Consumer-Problem behandeln, obwohl eine langsame Downstream-Abhängigkeit der eigentliche Engpass ist. Traces über Producer, Queue und Consumer zeigen, wo die Zeit verloren geht.
  • Nur den Gesamt-Lag eines Topics überwachen, nicht den pro Partition. So bleibt eine einzelne heiße Partition unsichtbar.
  • Die Dead-Letter-Queue ignorieren, bis sie Tage an fehlgeschlagenen Bestellungen enthält.
  • Feste Schwellwerte für die Tiefe verwenden, obwohl der normale Rückstau stark von der Tageszeit abhängt. Eine Baseline oder Anomalieerkennung berücksichtigt Saisonalität besser.

Wie Obseria hilft

Obseria erfasst Broker- und Consumer-Metriken wie Tiefe, Lag und Nachrichtenalter und verknüpft sie mit den Traces von Producern und Consumern. So sehen Sie, ob ein Rückstau aus einem Traffic-Burst, langsamen Consumern oder einer fehlerhaften Abhängigkeit stammt. Das Queue Monitoring von Obseria deckt Broker wie Kafka ab, und die Anomalieerkennung lernt normale Backlog-Muster. Mehr dazu unter Kafka Monitoring.

Häufig gestellte Fragen

Einen universellen Wert gibt es nicht. Gut ist eine Tiefe, bei der die resultierende Wartezeit (Tiefe geteilt durch Abarbeitungsrate) innerhalb Ihres Latenzziels bleibt. Bei den meisten Online-Workloads sollte die Queue meist nahezu leer sein und sich nach Bursts schnell abbauen.

Queue Depth zählt die wartenden Elemente in einer Queue. Consumer Lag wird bei logbasierten Brokern wie Kafka verwendet und ist die Differenz zwischen neuestem Offset und dem committeten Offset einer Consumer Group pro Partition. Beides beschreibt Rückstau; Lag gilt pro Consumer Group, weil mehrere Gruppen dasselbe Topic lesen können.

Ja. Für eine stabile Queue über einen ausreichend langen Zeitraum ist die mittlere Tiefe gleich Ankunftsrate mal mittlerer Verweildauer. Das eignet sich gut, um aus Tiefe und Rate die Wartezeit abzuschätzen, beschreibt aber Mittelwerte, keine Worst-Case-Verzögerungen.

Bei Storage ist die Queue Depth die Zahl offener I/O-Requests an einem Gerät. Eine höhere Tiefe kann auf SSDs und NVMe-Laufwerken den Durchsatz steigern. Ein dauerhaft hoher Wert bei steigender Latenz zeigt jedoch, dass das Gerät gesättigt ist.

Setzen Sie das Wissen in die Praxis um

Testen Sie Obseria 14 Tage kostenlos, mit OpenTelemetry und ohne proprietäre Agenten.