Запуск beanstalkd работника на удаленном сервере
Моя установка стека состоит из следующего
Machine1 - главный сервер (работает laravel)
Machine2 - сервер MySql для кодовой базы laravel
Machine3 - бобовый стебель
Я установил Supervisord на Machine1 и добавил следующий слушатель очереди
[program:queue1]
command=php artisan queue:listen --queue=queue1 --tries=2
...
Мой файл конфигурации очереди laravel (app/config/queue.php) читает следующее
'beanstalkd' => array(
'driver' => 'beanstalkd',
'host' => '--- Machine3 IP ---',
'queue' => 'queue1',
'ttr' => 60,
),
И я установил beanstalkd на Machine3 вместе с консолью Beanstalk и вижу, как мои задачи помещаются в очередь и успешно выполняются. Однако я не уверен, что Machine3 на самом деле их выполняет, и причина моего подозрения заключается в высокой загрузке ЦП на главном сервере по сравнению с отсутствием скачков загрузки ЦП на Machine3.
Я полностью отключил свой сервер beanstalkd, чтобы проверить, продолжает ли очередь обрабатываться, и в результате laravel сообщило об ошибке, указывающей, что он не может подключиться к серверу beanstalkd.
Я где-то читал, что вам нужно иметь свою кодовую базу laravel на сервере beanstalkd (Machine3), это действительно был путь?
1 ответ
Какая бы машина ни работала queue:listen
на это машина, которая выполняет фактическую обработку очереди.
В настоящий момент все, что вы делаете, это храните очереди на machine3, но обрабатываете их на machine1.
Так что вам нужно, чтобы machine3 запустил queue:listen
команда, если вы хотите, чтобы она обработала очередь.