Назад | Перейти на главную страницу

Конфигурация супервизора не работает на моем сервере

Я пытаюсь запустить приведенную ниже команду в фоновом режиме, используя supervisord:

php /home/instacheeta/artisan queue:work --timeout=120

После установки службы супервизора на моем сервере, определения ее конфигурации и ее запуска в базе данных нет никаких изменений, указывающих на то, что супервизор запускает приложение PHP.

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

[program:instacheeta]
process_name=%(program_name)s_%(process_num)s
command=php /home/instacheeta/artisan queue:work --timeout=120
autostart=true
autorestart=true
numprocs=1
redirect_stderr=true
stdout_logfile=/home/instacheeta/worker.log

queue:work срабатывает после запуска cronjob каждую минуту и ​​работает до конца.

cronjob работает отлично; Я проверил это в своей базе данных, чтобы убедиться, что новые данные хранятся каждую минуту. К сожалению, похоже, что супервизор не выполняет заданную команду.

Я не получаю никаких ошибок worker.log. Другая информация для устранения неполадок:

[root@host instacheeta]# ps aux|grep supervisor
root      3267  0.0  0.2 219784 12992 ?        Ss   11:47   0:02 /usr/bin/python /usr/bin/supervisord
root     18279  0.0  0.0 112680   948 pts/0    S+   14:38   0:00 grep --color=auto supervisor

Не удалось добавить программу в supervisorctl:

[root@host instacheeta]# supervisorctl add instacheeta
ERROR: no such process/group: instacheeta

статус супервайзера:

[root@host instacheeta]# supervisorctl status
[root@host instacheeta]#

Необходимо перезагрузить конфигурацию супервизора.

Для этого есть два метода:

  1. Перезапустите supervisor сервис с использованием service инструмент (service supervisor restart). Это вызовет все контролируемые процессы, но, поскольку в настоящее время у вас нет таких запущенных процессов, это не проблема.

  2. Спроси supervisor демон для динамической перезагрузки своей конфигурации из файлов конфигурации. Бегать supervisorctl reread с последующим supervisorctl update для обновления конфигурации. Теперь вы можете использовать start чтобы запустить программу, или status для просмотра его статуса.


supervisor не является cron!

В своем вопросе вы заявляете:

cronjob работает отлично; Я проверил это в своей базе данных, чтобы убедиться, что новые данные хранятся каждую минуту. К сожалению, похоже, что супервизор не выполняет заданную команду.

Имейте в виду, что если раньше у вас была cronjob, которая вызывала команду в обычном цикле, supervisor не сделает этого без внешнего вмешательства или если программа не завершит работу после завершения работы. supervisor обычно предназначен для вызова двоичных файлов, предоставляет службу и продолжает работать после запуска.

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