СитуацияПочему мои задания очереди Laravel не срабатывают через 60 секунд?
Я использую Laravel Очередь для обработки большого количества мультимедийных файлов, индивидуальная работа, как ожидается, займет минуты (позволяет просто сказать, до часа).
Я использую Supervisor для запуска моей очереди, и я запускаю 20 процессов за раз. Мой файл конфигурации супервизора выглядит следующим образом:
[program:duplitron-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/duplitron/artisan queue:listen database --timeout=0 --memory=500 --tries=1
autostart=true
autorestart=true
user=duplitron
numprocs=20
redirect_stderr=true
stdout_logfile=/var/www/duplitron/storage/logs/duplitron-worker.log
Есть несколько странностей, которые я не знаю, как объяснить или исправить:
- Мои работы достаточно последовательно терпят неудачу после запуска в течение 60 до 65 секунд ,
- После того, как помечается как сбой, задание продолжает работать даже после того, как оно помечается как сбой. В конце концов они действительно успешно решаются.
- Когда я run the failed task in isolation, чтобы найти причину проблемы, она преуспевает.
Я твердо верю, что это проблема с таймаутом; однако у меня создалось впечатление, что --timeout=0
приведет к неограниченному таймауту.
Вопрос
Как я могу предотвратить это временный «отказ» состояние задания? Существуют ли другие места, где может быть вызван тайм-аут очереди, о котором я не знаю?
Проверьте 'max_execution_time' ваш php.ini Насколько это говорит? Если это 60 секунд, есть твоя проблема. попробуйте увеличить таймаут. –
Отличная мысль @WillyPt - не будут ли настройки php.ini завершать весь скрипт? Он продолжает решать. (FWIW 'max_execution_time' был установлен на 30 секунд, я буду исследовать и экспериментировать по этим строкам). – slifty