2011-07-01 3 views
6

Nous avons des problèmes avec notre démon céleri très floconneux. Nous utilisons un script de déploiement de matrice pour redémarrer le démon chaque fois que nous appliquons des modifications, mais pour une raison quelconque, cela provoque des problèmes massifs.Problèmes avec le démon céleri

Chaque fois que le script de déploiement est exécuté, les processus de céleri sont laissés dans un état pseudo-mort. Ils vont (malheureusement) toujours consommer des tâches de rabbitmq, mais ils ne feront rien. Confusément une brève inspection indiquerait que tout semble "bien" dans cet état, le statut celeryctl montre un nœud en ligne et ps aux | grep céleri montre 2 processus en cours.

Cependant, en essayant d'exécuter /etc/init.d/celeryd arrêter les résultats manuellement dans l'erreur suivante:

start-stop-daemon: warning: failed to kill 30360: No such process 

Dans cet état de tenter d'exécuter début celeryd semble fonctionner correctement, mais en fait ne rien. La seule façon de résoudre le problème consiste à supprimer manuellement les processus de céleri en cours d'exécution, puis à les redémarrer.

Des idées que se passe-t-il ici? Nous n'avons pas non plus de confirmation complète, mais nous pensons que le problème se développe également après quelques jours (sans activité c'est un serveur de test actuellement) par lui-même, sans déploiement.

+0

Nous utilisons également un script de déploiement, mais pas avec fabric, nous exécutons simplement la commande shell celeryd restart à partir de python, et tout fonctionne correctement. Je connais quelques problèmes du script celeryd.sh avec la version olds d'ubuntu, inférieure à 10.10 à cause d'une instruction bash pour le processus get running. Sur quel système d'exploitation vous l'exécutez? Quelle version de céleri? –

+0

Comment exactement votre script redémarre-t-il le démon? Est-ce juste en tirant un «kill -9» ou similaire? –

+0

Il déclenche la commande d'arrêt du script init.d. C'est le script init.d inclus dans les fichiers github contrib de celery. Il avait l'habitude de déclencher le redémarrage au lieu de s'arrêter puis de commencer, mais j'ai changé cela comme tir dans le noir. Le script init.d appelle la commande start-stop-daemon – John

Répondre

5

Je ne peux pas dire que je sais ce qui affecte votre configuration, mais j'ai toujours utilisé supervisord pour exécuter le céleri - peut-être que le problème a à voir avec le démarrage? Peu importe, je n'ai jamais connu ça avec du céleri courant sur supervord.

Pour faire bonne mesure, voici un superviseur échantillon config pour le céleri:

[program:celeryd] 
directory=/path/to/project/ 
command=/path/to/project/venv/bin/python manage.py celeryd -l INFO 
user=nobody 
autostart=true 
autorestart=true 
startsecs=10 
numprocs=1 
stdout_logfile=/var/log/sites/foo/celeryd_stdout.log 
stderr_logfile=/var/log/sites/foo/celeryd_stderr.log 

; Need to wait for currently executing tasks to finish at shutdown. 
; Increase this if you have very long running tasks. 
stopwaitsecs = 600 

celeryd dans mon Redémarrage scénario fabuleux est donc aussi simple que l'émission d'un sudo supervisorctl restart celeryd.

Questions connexes