Laravel Artisan Queues - wysokie wykorzystanie procesora

Ustawiłem kolejki w Laravel dla moich skryptów przetwarzania. Używam beanstalkd i supervisord. Istnieje 6 różnych lamp do różnych rodzajów przetwarzania.

Problem polega na tym, że dla każdej tuby rzemieślnik ciągle pojawia się w każdej sekundzie. Kod pracownika wydaje się spać przez 1 sekundę, a następnie wątek roboczy używa 7-15% procesora, pomnożyć to przez 6 lamp ... i chciałbym mieć wielu pracowników na lampę. Moja jednostka jest zjadana.

Próbowałem zmienić 1 sekundowy sen na 10 sekund. Pomaga to, ale co 10 sekund, gdy pracownicy budzą się z powrotem, wciąż istnieje ogromny skok procesora. W tej chwili nie przetwarzam nawet niczego, ponieważ kolejki są całkowicie puste, po prostu pracownicy szukają czegoś do zrobienia.

Przetestowałem również, aby zobaczyć użycie procesora laravel, gdy odświeżyłem stronę w brower'u, który unosił się w okolicach 10%. Jestem teraz w niskiej instancji rackspace, żeby to wyjaśnić, ale nadal ... wygląda na to, że pracownicy za każdym razem, gdy się budzą, rozkręcają przypadek.

Czy nie ma sposobu, aby to rozwiązać? Czy muszę po prostu włożyć dużo pieniędzy w droższy serwer, aby móc słuchać, czy praca jest gotowa?

EDYTOWAĆ:

Znalazłem rozwiązanie ... NIE używać kolejki rzemieślniczej: słuchacz lub kolejka: praca Przejrzałem kod kolejki i wydaje się, że nie ma sposobu na rozwiązanie tego problemu, wymaga on laravel do ładowania za każdym razem, gdy pracownik sprawdza po więcej pracy.

Zamiast tego napisałem własnego słuchacza używając pheanstalk. Nadal używam laravel do wprowadzania rzeczy do kolejki, a następnie mój odbiornik niestandardowy analizuje dane kolejki, a następnie uruchamia polecenie rzemieślnika.

Teraz moje użycie procesora dla moich słuchaczy jest poniżej% 0, jedyny czas, w którym mój procesor strzela teraz, to kiedy faktycznie znajduje pracę do wykonania, a następnie uruchamia komendę.

questionAnswers(3)

yourAnswerToTheQuestion