Gearman Job Server / Ubuntu

4

Eu tenho o Gearman instalado, executando e passando trabalhos perfeitamente, mas apenas quando eu inicio manualmente a fila de tarefas com este comando:

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

Se eu fizer isso, tenho outra instância do EC2 em execução como um trabalhador e uma terceira passando em tarefas. Perfeito, mas eu não quero ter que manter um terminal aberto (obviamente) ou mexer na tela. Eu gostaria que isso fosse executado na inicialização.

Então:

$ 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

Parece bom para mim. Mas quando eu digo ao meu trabalhador para se conectar:

$ 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

Falha!

Também notei que nada está entrando no arquivo de log (ele não foi criado automaticamente, mas foi referenciado neste script init.d na instalação). Eu tentei criá-lo e até mesmo chorar para gearman: gearman, mas não há alegria lá, por isso é difícil de depurar.

    
por Phil Sturgeon 13.01.2012 / 20:21

2 respostas

7

O problema é que o daemon está escutando 127.0.0.1/local loopback em vez de um IP público.

Isso é especificado em / etc / default / gearman-job-server no Ubuntu.

Mude para o IP público da máquina, reinicie o daemon com o script init e tudo deve estar bem.

    
por 13.01.2012 / 20:46
2

Normalmente, este erro ocorre devido a um parâmetro em GearmanClient :: addServer (). Não gosta de "localhost" como parâmetro. Tente especificar 127.0.0.1 ou não especificar nada.

    
por 13.01.2012 / 20:30