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

Сервер заданий Gearman / Ubuntu

У меня Gearman установлен, работает и передает задания отлично, но только когда я вручную запускаю очередь заданий с помощью этой команды:

/usr/sbin/gearmand -p 4730 -vvvv -u gearman 

Если я сделаю это, у меня будет другой экземпляр EC2, работающий как рабочий, а третий - выполняющий задания. Отлично, но я не хочу держать терминал открытым (очевидно) или возиться с экраном. Я бы хотел, чтобы это запускалось при запуске.

Так:

$ ps aux | grep gearman
gearman    745  0.2  0.2   8096  1388 ?        Ss   19:11   0:00 /usr/sbin/gearmand --pid-file=/var/run/gearman/gearmand.pid --user=gearman --daemon --log-file=/var/log/gearman-job-server/gearman.log --listen=127.0.0.1

Мне нравится. Но когда я говорю своему рабочему подключиться:

$ php workers/resize.php 
Waiting for job...
PHP Warning:  GearmanWorker::work(): gearman_connection_flush:write:111 in /home/ubuntu/workers/resize.php on line 20

Потерпеть поражение!

Также я заметил, что в файл журнала ничего не записывается (он не был создан автоматически, но упоминался в этом сценарии init.d при установке). Я пробовал создать его и даже поигрался с gearman: gearman, но без радости, так что отладить сложно.

Проблема в том, что демон прослушивает 127.0.0.1/local loopback, а не общедоступный IP-адрес.

Это указано в / etc / default / gearman-job-server в Ubuntu.

Измените его на общедоступный IP-адрес машины, перезапустите демон с помощью сценария инициализации, и все должно быть в порядке.

Обычно эта ошибка возникает из-за параметра в GearmanClient :: addServer (). Ему не нравится "localhost" в качестве параметра. Попробуйте указать 127.0.0.1 или ничего не указывать.