Laravel Artisan Queues - высокая загрузка процессора

Я установил очереди в Laravel для своих сценариев обработки. Я использую beanstalkd и supervisord. Для разных видов обработки есть 6 разных тюбиков.

Проблема в том, что для каждой трубки ремесленник постоянно порождает рабочих каждую секунду. Рабочий код, кажется, спит в течение 1 секунды, а затем рабочий поток использует 7-15% ЦП, умножьте это на 6 пробирок ... и я хотел бы иметь несколько рабочих на пробирку ... мой ЦП расходуется.

Я попытался изменить 1-секундный сон на 10 секунд. Это помогает, но каждые 10 секунд после пробуждения рабочих все еще наблюдается огромный всплеск процессора. Сейчас я даже ничего не обрабатываю, потому что очереди совершенно пусты, просто рабочие ищут что-то сделать.

Я также проверил, чтобы увидеть использование процессором laravel, когда я обновлял страницу в браузере, и это колебалось около 10% .. Я сейчас на маломощном экземпляре стоечного пространства, чтобы это можно было объяснить, но все же ... похоже рабочие раскручивают экземпляр Ларавелла каждый раз, когда просыпаются.

Нет ли способа решить это? Нужно ли просто вкладывать много денег в более дорогой сервер, чтобы слушать, готова ли работа?

РЕДАКТИРОВАТЬ:

Нашел решение ... это было НЕ использовать очередь ремесленника: слушатель или очередь: работа Я посмотрел на код очереди и там не 'Похоже, что это способ обойти эту проблему, он требует загрузки laravel каждый раз, когда работник проверяет, что еще нужно сделать.

Вместо этого я написал свой собственный слушатель, используя pheanstalk. Я все еще использую laravel, чтобы помещать вещи в очередь, затем мой пользовательский прослушиватель анализирует данные очереди и затем запускает команду ремесленника для запуска.

Теперь мой процессор используется для моих слушателей менее 0%, единственный раз, когда мой процессор запускается сейчас, когда он действительно находит работу и затем запускает команду, я в порядке.

Ответы на вопрос(3)

Ваш ответ на вопрос