Ich benutze Sidekiq in meiner Rails App, um 50k + Jobs auf einmal in Warteschlange zu stellen. Unsere Poolgröße ist auf 9 gesetzt.Nebenläufigkeit mit Sidekiq verursacht einige Probleme
Die Jobs sind alle verwandt und tun das gleiche. Wir haben ein anderes Modell, das einen Zähler hat. Während jedes Jobs überprüfen wir, ob dieses Modell eine Spalte mit einem Wert über 200 aufweist. Wenn es über 200 liegt, erstellen wir eine weitere Instanz dieses Modells mit Wert = 0 und setzen die Jobs fort. Da jedoch 9 Jobs gleichzeitig ausgeführt werden, lesen alle 9 Jobs den Wert dieser Spalte gleichzeitig mit mehr als 200, und alle erstellen neue Instanzen, was nicht richtig ist.
Was ist die beste Lösung für dieses Problem? Wir möchten grundsätzlich, dass alle Jobs vom aktuellsten Wert gelesen werden.
Also, wie ich Ihre Arbeitsplätze undrrestand tun einige Mitarbeiter, UND jedes Mal Wert überprüfen und neues Modell erstellen? Vielleicht können Sie einen separaten Job für diese Mitarbeiter erstellen? 8 Jobs machen nur ihre Arbeit, und ein Job überprüft nur diesen Wert und erstellt eine neue Instanz von benötigt? – denys281
Jeder Job prüft einen Wert in der Datenbank und stellt nur gelegentlich fest, dass er ein neues Modell erstellen muss. Wenn dies jedoch geschieht, müssen alle derzeit ausgeführten Jobs ein neues Modal auf einmal erstellen und 8-10 davon erstellen. Es sollte nur 1 erstellen. –