Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie kann ich einen zunehmenden Rückstand an Nachrichten in meiner Amazon-SQS-Warteschlange verhindern?

Lesedauer: 3 Minute
0

Der Rückstand an Nachrichten in meiner Warteschlange für Amazon Simple Queue Service (Amazon SQS) nimmt zu. Warum passiert das und wie kann ich verhindern, dass der Rückstand zunimmt?

Kurzbeschreibung

Standard- und FIFO SQS-Warteschlangen

Der Rückstand an Nachrichten nimmt unter folgenden Umständen zu:

  • Produzenten senden Nachrichten schneller als die Nachrichten konsumiert werden.
  • Verbraucher löschen keine Nachrichten innerhalb der Zeitbeschränkung für die Sichtbarkeit. Wenn die SQS-Warteschlange abgefragt wird, erscheinen Nachrichten wieder in der Warteschlange.

FIFO SQS-Warteschlangen

Für FIFO (First-In-First-Out) SQS-Warteschlangen kann eine Erhöhung des Rückstands von Nachrichten auch aus einem der folgenden Punkte resultieren:

  • Das Limit des FIFO-Warteschlangen-Puffers von 20.000.
  • Eine Nachricht, die zu einer Nachrichtengruppe gehört, bleibt bei einem Verbraucher hängen und verhindert, dass andere Nachrichten derselben Nachrichtengruppe verarbeitet werden.

Lösung

Befolgen Sie diese bewährten Methoden, um zu verhindern, dass der Rückstand an Nachrichten zunimmt.

Standard- und FIFO SQS-Warteschlangen

  • Legen Sie die optimale Zeitbeschränkung für die Sichtbarkeit der SQS-Warteschlange fest, damit der Verbraucher Nachrichten löschen kann, nachdem er sie innerhalb der Zeitbeschränkung für die Sichtbarkeit verarbeitet hat. Wenn Sie nicht wissen, wie lange es dauert, eine Nachricht zu verarbeiten, erstellen Sie einen Herzschlag für Ihren Verbraucherprozess. Geben Sie die anfängliche Zeitbeschränkung für die Sichtbarkeit an (z. B. 2 Minuten). Wenn der Verbraucher dann mehr Zeit benötigt, um die Nachricht zu verarbeiten, erhöhen Sie die Zeitbeschränkung für die Sichtbarkeit mithilfe des API-Aufrufs ChangeMessageVisibility weiter.
  • Erhöhen Sie die Batch-Größe, wenn Sie ReceiveMessage-API-Aufrufe tätigen. Stellen Sie den Parameterwert MaxNumberOfMessages auf mehr als 1 und bis zu einem Maximum von 10 ein.
  • Überwachen Sie die SQS-Warteschlangenmetrik „Ungefähre Anzahl sichtbarer Nachrichten“. Mit dieser Metrik können Sie feststellen, ob Produzenten anfangen, Nachrichten mit einer höheren Rate zu produzieren, als Verbraucher die Nachrichten konsumieren können. Um horizontal zu skalieren, erhöhen Sie die Anzahl der Verbraucher oder Clients, die die SQS-Warteschlange nutzen, oder erhöhen Sie die Anzahl der Threads, die die Warteschlange abfragen.

FIFO SQS-Warteschlangen

Puffer für 20.000 Nachrichten

FIFO-Warteschlangen erlauben maximal 20.000 Inflight-Nachrichten. Inflight-Nachrichten enthalten solche, die von einem Verbraucher aus einer Warteschlange empfangen, aber noch nicht aus der Warteschlange gelöscht wurden. Wenn Sie das Kontingent von 20.000 erreichen, gibt Amazon SQS keine Fehlermeldungen zurück. Eine FIFO-Warteschlange durchsucht die ersten 20.000 Nachrichten, um verfügbare Nachrichtengruppen zu ermitteln. Wenn Sie einen Rückstand an Nachrichten in einer einzelnen Nachrichtengruppe haben, können Sie keine Nachrichten aus anderen Nachrichtengruppen konsumieren, bis Sie erfolgreich Nachrichten aus dem Rückstand konsumiert haben.

Skalierung über Nachrichtengruppen

Nachrichten, die zu derselben Nachrichtengruppe gehören, werden einzeln in der Reihenfolge relativ zur Nachrichtengruppe verarbeitet. Beim Empfang von Nachrichten mit mehreren Nachrichtengruppen-IDs versucht Amazon SQS zunächst, so viele Nachrichten mit derselben Nachrichtengruppen-ID wie möglich zurückzugeben. Auf diese Weise können andere Verbraucher Nachrichten mit einer anderen Nachrichtengruppen-ID verarbeiten. Wenn Nachrichten, die zu einer bestimmten Nachrichtengruppen-ID gehören, unsichtbar sind, kann kein anderer Verbraucher Nachrichten mit derselben Nachrichtengruppen-ID verarbeiten. Verbraucher können jedoch Nachrichten von anderen Nachrichtengruppen verarbeiten. Versuchen Sie, die Anzahl der Nachrichtengruppen zu erhöhen, bei denen die Reihenfolge nicht wichtig ist.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren