Ich habe ein Problem mit Sidekiq.
Es verarbeitet Jobs über die Sidekiq-Web-Oberfläche überwiegend erstaunlich schnell. Gelegentlich scheint es jedoch überlastet zu sein und wird extrem langsam. Es läuft dann mit etwa 1–5 % seiner normalen Geschwindigkeit und erholt sich nicht, es sei denn, ich leere Redis – obwohl die Serverressourcennutzung in Ordnung bzw. gering ist.
Es sieht so aus, als würde es, sobald die Warteschlange eine bestimmte Größe erreicht, zum Stillstand kommen und sich drastisch verlangsamen. Dadurch wächst die Warteschlange noch weiter. Ich rate hier zwar nur, vielleicht ist die Warteschlange auch nur groß, weil sie aus einem anderen Grund verlangsamt wurde.
Dieses GIF beschreibt, wie es für mich aussieht.
Es stehen ausreichend Serverressourcen zur Verfügung, die CPU-Auslastung ist aktuell sehr niedrig – unter 10 %. Auch RAM und SSD sind ausreichend vorhanden. Der Server verfügt über 16 CPU-Kerne mit 32 Threads. Ich habe versucht, zwischen 8 und 14 Unicorn-Sidekiq-Prozesse zu starten. Ich habe es auch mit 20 versucht, doch das führte zu vielen 5xx-Fehlern.
Ich konnte langsame Jobs, die auf dem Reiter „Busy“ der Sidekiq-Web-Oberfläche angezeigt wurden, beschleunigen, indem ich
(durch Hinzufügen von vm.overcommit_memory = 1 in die Datei /etc/sysctl.conf und einem Neustart) sowie durch Reduzierung der Unicorn-Sidekiq-Prozesse auf 8 (von ursprünglich 12) verwendet habe.
Es läuft jedoch immer noch langsam. Gestern habe ich dies im Redis-Log gesehen (die einzige andere Warnung betraf das fehlende Setzen von overcommit_memory auf 1, was ich oben bereits geändert habe):
# WARNING: /proc/sys/net/core/somaxconn ist auf den niedrigeren Wert von 128 gesetzt
^ Hat jemand diese Warnung oben bereits behoben?
Wie auch immer, falls jemand Ideen hat, was die Ursache und/oder Lösung sein könnte – bitte geben Sie mir Bescheid. Ich wäre Ihnen dankbar.
Es wäre wirklich großartig, dieses Problem dauerhaft zu lösen, statt es nur durch Leeren von Redis zu umgehen.
Hier ist ein Screenshot dessen, was ich auf dem Sidekiq-Dashboard sehe:
Und einige Screenshots der Jobs im Reiter „Busy“:
Außerdem: Weiß jemand, ob es sicher ist, diese Option zu verwenden? Das Löschen der Warteschlange mit niedriger Priorität über die Sidekiq-Web-Oberfläche?





