Fehler: Another worker is already running for receiver: "async"

Meine Logfiles (/httpdocs/var/log/prod-2024-01-23.log) sind voll mit immer der gleichen Fehlermeldung:

[2024-01-23T15:14:05.419853+00:00] request.ERROR: Uncaught PHP Exception Shopware\Core\Framework\MessageQueue\MessageQueueException: "Another worker is already running for receiver: "async"" at /var/www/vhosts/meine-domain.at/httpdocs/vendor/shopware/core/Framework/MessageQueue/MessageQueueException.php line 38 {"exception":"[object] (Shopware\\Core\\Framework\\MessageQueue\\MessageQueueException(code: 0): Another worker is already running for receiver: \"async\" at /var/www/vhosts/meine-domain.at/httpdocs/vendor/shopware/core/Framework/MessageQueue/MessageQueueException.php:38)"} []

Hat jemand eine Idee was hier das Problem ist?

1 Like

Haben hier das selbe Problem seit dem Update auf 6.5.8.2 (dabei wurde auch PHP auf 8.2.14 angehoben). Hinzu kam noch, dass Bestellungen nicht ausgeführt wurden, sondern mit der Nachricht „Ihr Warenkorb ist leer“ quittiert wurden. Das ließ sich allerdings erstmal beheben, indem wir unter System->Mailer auf synchronen Mailversand gestellt haben. Hast Du schon eine Lösung gefunden oder jemand anderes eine Idee?

PS. vor dem Update hatten wir in dem Shop unter Nachrichten immer „XXXXX Seiten verbleibend“, wie hier beschrieben https://forum.shopware.com/t/erfolg-200-seiten-verbleibend/98530. Das konnten wir mit dem Plugin „Tools“ und „Warteschlange zurücksetzen“ beheben. Hast Du vielleicht was Ähnliches gemacht?

PPS. Da laut dieses Beitrags https://forum.shopware.com/t/request-failed-with-status-code-500-bei-store-update/102387 eine ähnliche Problematik aufgrund des SW-Plugins „Store“ aufgetreten ist, teste ich jetzt mal, ob das Deaktivieren des Plugins etwas ausmacht.

1 Like

Kurzes Update: Ein paar Tage lief es zunächst problemlos, jetzt war der Fehler wieder da… Irgendwas passt da mit den workern nicht. Möglicherweise hängt es mit dem Plugin Tools von Friends of Shopware oder einfach mit der SW 6.5.8.2 zusammen. Da wird gerade viel zum Thema gepatcht. Ich geh jetzt mal auf 6.5.8.4.

@ mm-webconsulting Setzt ihr das Tools-Plugin auch ein oder sonst schon was rausgefunden?

Nein, das Plugin verwenden wir nicht.

Nachdem ich den Mailer auf synchronen Mailversand gestellt habe, kommt bei uns auch keine Fehlermeldung mehr. Unsere Version ist die 6.5.8.2.

Super, dass bei Dir keine Meldungen mehr auftauchen. Bei uns war’s das leider nicht abschließend. Es kommen zwar manche Bestellungen durch - heute morgen war der Fehler im Log aber wieder 9mal innerhalb von 3 Minuten drin. Tools- und Store-Plugin waren deaktiviert - SW 6.5.8.4. Bin langsam etwas ratlos…

Hier vielleicht noch ein Ansatz. Mit dem wieder aktivierten Tools-Plugin sehe ich unter „Geplante Aufgaben“ u.A. folgende Tasks:
product_export_generate_task - Intervall: 60 Status: scheduled
shopware.invalidate_cache - Intervall: 20, Status: skipped

Die Intervalle kommen mir recht kurz vor.
Ein passender Forenbeitrag, zu dem es aber anscheinend auch noch keine Lösung gibt:

Wie sieht denn euer Cronjob aus?
Ich meine mich zu erinnern, dass der oben beschriebene Fehler aufgehört hat nachdem wir die Cronjobs angepasst haben. Diese hier nutzen wir aktuell, basierend auf der Doku:

MAILTO=""
*/6 * * * * /usr/local/vhosts/WEBSPACE/shopware/bin/console scheduled-task:run --time-limit=300 --memory-limit=512M
*/6 * * * * /usr/local/vhosts/WEBSPACE/shopware/bin/console messenger:consume failed async --time-limit=300

Wichtig ist hierbei das „failed async“, da hatte sich mit Shopware 6.5 was geändert:

1 Like

Wir setzen keine Cronjobs ein. Alles nur ĂĽber die Standard-(admin?)Worker. Mir ist bewusst, dass das keine best-practice ist, aber normalerweise funktioniert ja auch das - auch async-Mails, ohne dass ein Admin eingeloggt ist.

Da ich bislang keine andere Lösung gefunden habe, habe ich jetzt mal die Cronjobs eingerichtet. Hat das eine Bewandtnis, dass beim zweiten Job messenger:consume kein Memory-Limit eingesetzt wird? In der Doku steht außerdem ein Time-Limit von 60. Hab aber auch ein anderes Tutorial gefunden, indem auch die 300 genutzt werden (https://www.atloss.de/ratgeber/shopware-6-cronjob/).

Laufen die beiden Jobs dann bei euch parallel oder alternierend und wie häufig lasst ihr die dann laufen?

Bei uns laufen die Cronjobs parallel jede Minute und fĂĽr 55 Sekunden.
Wichtig wäre noch: Bei Cronjobs muss man die PHP Version und Pfade ansprechen. Das sieht dann so wie folgt aus:

/usr/bin/php8.2 /home/www/shopware6/bin/console messenger:consume failed async --time-limit=55
/usr/bin/php8.2 /home/www/shopware6/bin/console scheduled-task:run --time-limit=55

und denkt daran, der Admin Worker soll ĂĽber die z-shopware.yaml deaktiviert werden, da die andere Datei bei den Updates ĂĽberschrieben werden kann.

1 Like

Vielen Dank fĂĽr die Tipps!
Bei mir siehts jetzt noch etwas anders aus:

/opt/plesk/php/8.2/bin/php /var/www/vhosts/xyz/httpdocs/bin/console scheduled-task:run --time-limit=120 --memory-limit=512M
/opt/plesk/php/8.2/bin/php /var/www/vhosts/xyz/httpdocs/bin/console messenger:consume failed async --time-limit=120 --memory-limit=512M

Und dann alternierend alle 6min. - also mit 3min. Abstand zwischen den beiden mit jeweils ner Minute Pause dazwischen. Bei paralleler AusfĂĽhrung mĂĽsste ja wahrscheinlich das MemoryLimit halbiert werden, wenn der PHP-Interpreter im Hosting max. 512M hat.

Mal schauen, ob die 6min. zu lang sind. Oder hängt da dann doch sowas zeitkritisches dran, dass man das ständig laufen haben sollte? In dem betreffenden Shop kommen in der Regel nicht mehr als 20 Bestellungen am Tag rein.