1 votes

Gearman ne fonctionne pas lorsqu'il est exécuté avec Supervisord

Je teste Gearman sur un serveur de travail dédié (Ubuntu 12.04) pour mon projet PHP (en utilisant pecl/gearman comme implémentation PHP).

Manuellement, cela fonctionne bien : le démarrage du client, l'ajout de tâches et l'exécution d'un ou plusieurs travailleurs dans des shells séparés fonctionnent comme prévu. Maintenant, je veux exécuter les travailleurs en utilisant Supervisord, mais cela génère un grand nombre d'erreurs suivantes dans le journal Gearman :

WARNING [     4 ] lost connection to client recv(peer has closed connection) 127.0.0.1:37126 -> libgearman-server/io.cc:608
  ERROR [     4 ] Failed while in _connection_read() -> libgearman-server/io.cc:489

Le superviseur conf est par défaut, j'ai juste ajouté un programme :

[program:migration]
command=/path/to/script
process_name=%(program_name)s_%(process_num)02d
numprocs=10
stdout_logfile=/var/log/gearman.log
stderr_logfile=/var/log/gearman-error.log
stdout_logfile_maxbytes=1MB
environment=GEARMAN_USER=gearman
autostart=true
autorestart=true
user=gearman
stopsignal=KILL

Informations sur le processus Gearman :

gearman   9802  0.0  0.0 476116  1780 ?        Ssl  12:18   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

Quand on teste le superviseur :

supervisord -n -c /etc/supervisor/supervisord.conf 

Je suis un peu coincé ici, car le message d'erreur ne donne pas vraiment de résultats sur Google. Toute aide est la bienvenue.

3voto

Yo-han Points 166

J'ai rencontré la même erreur dans presque exactement la même pile de serveurs, et j'ai trouvé une solution. L'avertissement et l'erreur sont lancés parce que vous essayez d'envoyer une tâche à un travailleur non enregistré. Vérifiez le nom de votre travailleur et vérifiez avec ps -ax sur la ligne de commande s'il fonctionne.

Envoyer une tâche à un travailleur non existant sur la ligne de commande en utilisant gearmand -f ne vous donnera aucun retour. Si vous le faites en utilisant le module pecl, vous obtiendrez une erreur.

PS : Je sais que tu as déjà quitté le navire et que tu as déménagé avec Beanstalkd mais peut-être que cela peut aider quelqu'un d'autre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X