Запуск 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 команда, если вы хотите, чтобы она обработала очередь.

Другие вопросы по тегам