Gearman Job Server / 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 при установке). Я попытался создать его и даже покушать на шестерёнку: шестерёнку, но радости нет, поэтому сложно отлаживать.

2 ответа

Решение

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

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

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

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

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