Я использую супервизор для одновременного запуска 20 процессов очередей из таблицы заданий.
Мой планировщик задач создает около 5000 заданий в таблице заданий, а затем эти задания обрабатываются 20 процессами супервизора.
Проблема в том, что изначально запускается 20 очередей, но через некоторое время предположим, что 16 очередей процессов закончили работу, а 4 еще обрабатываются. почему эти 16 процессов не выбирают другие задания из очередей, почему они ждут завершения всех 4 процессов, прежде чем брать еще 20?
Этот SQL-запрос должен всегда показывать 20 результатов все время, но в большинстве случаев он показывает 5-10 результатов, а иногда 1-4. Я хочу, чтобы этот запрос показывал 20 результатов все время.
SELECT * FROM jobs WHERE reserved_at IS NOT NULL;
Я использую QUEUE_CONNECTION=database
в моем файле .env.
Я не могу удалить --timeout=0
, потому что некоторые задания маленькие, некоторые большие, и я не могу их классифицировать.
Вот мой код conf администратора;
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/app/current/artisan queue:work --sleep=3 --tries=1 --timeout=0
autostart=true
autorestart=true
user=root
numprocs=20
redirect_stderr=true
stdout_logfile=/var/app/current/storage/logs/worker.log