Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.02.2017 22:07:45

Странности с одновременным выполнением задач из очереди

Доброго времени суток.
Если кто сталкивался, прошу помочь со следующей проблемой - есть необходимость одновременного выполнения определения определенного числа задач из очереди, например - 8.
В конфиге супервизора есть опция numprocs=8 , и сразу при старте супервизора все прекрасно - 8 задач одновременно начинают обрабатываться. В дальнейшем же одновременно выполняется от 1 до 3 задач, но не 8: https://scr.pics/Monosnap_2017-02-28_21-06-38.png

Конфиг супервизора:

[program:laravel-worker]
#process_name=%(laravelWorker)s_%(1)02d
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php71 /home/www-data/domains/app/artisan queue:listen --timeout=0 --tries=5
autostart=true
autorestart=true
user=www-data
numprocs=8
redirect_stderr=true
stdout_logfile=/home/www-data/domains/app/laravelWorker.log

Запущено при этом как и следует, 8 обработчиков очереди:

www-data 23569  0.6  0.1 451852 28972 ?        S    21:43   0:08 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5
www-data 23883  0.5  0.1 451520 28260 ?        S    21:52   0:04 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5
www-data 24892  0.6  0.1 451852 28676 ?        S    21:57   0:02 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5
www-data 24910  0.7  0.1 451852 28676 ?        S    21:58   0:02 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5
www-data 25001  0.7  0.1 451520 30292 ?        S    22:00   0:01 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5
www-data 25005  0.7  0.1 451520 30300 ?        S    22:00   0:01 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5
www-data 25010  0.7  0.1 451520 29412 ?        S    22:00   0:01 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5
www-data 26444  1.8  0.1 451520 28540 ?        S    22:03   0:01 /opt/remi/php71/root/usr/bin/php artisan queue:work  --once --queue=default --delay=0 --memory=128 --sleep=3 --tries=5

Но реально выполняется только от 1 до 3 задач одновременно. При этом если перезапустить супервизор то их снова будет одновременно выполняться 8. Сами задачи же выполняются нормально, без ошибок и тд.

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

Почему так происходит? Как сделать так, чтобы стабильно одновременно выполнялось нужное количество (8) задач из очереди?

Изменено Ivan_Garbera (28.02.2017 22:13:07)

Не в сети

#2 01.03.2017 06:18:35

Re: Странности с одновременным выполнением задач из очереди

наверное из-за того что используешь queue:listen. с ним вообще проблемы, залипает, отваливается, проц жрёт. я его использую только в отладке, для продакшена – queue:work --daemon.

вот пример рабочего конфига на 4 процесса, работает в продакшене прямо сейчас без каких либо проблем. версия лары 5.3.

[program:app-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/webserver/app/artisan queue:work --sleep=3 --tries=3 --daemon -v
autostart=true
autorestart=true
user=webserver
numprocs=4
redirect_stderr=true
stdout_logfile=/home/webserver/app/storage/logs/worker.log

у меня небольшое отличие от твоего конфига – под www-data работает только nginx. php-fpm, очередь, задачи по крону – всё запущено от пользователя webserver

Не в сети

#3 01.03.2017 07:00:05

Re: Странности с одновременным выполнением задач из очереди

Спасибо. Перевел очереди beanstalk, пока полет нормальный и с моим конфигом. Если будут проблемы то попробую queue:work --daemon

Не в сети

Подвал раздела