2012-01-09 5 views
9

J'ai une application Django déployée sur Heroku, avec un processus de travail exécutant céleri (+ celerycam pour la surveillance). J'utilise la base de données RedisToGo Redis en tant que courtier. J'ai remarqué que Redis manque de mémoire.Céleri et Redis continuent à manquer de mémoire

C'est ce que mon procfile ressemble:

web: python app/manage.py run_gunicorn -b "0.0.0.0:$PORT" -w 3 
worker: python lipo/manage.py celerycam & python app/manage.py celeryd -E -B --loglevel=INFO 

est ici la sortie de touches '*':

  1. "_kombu.binding.celeryd.pidbox"
  2. « celeryev.643a99be -74e8-44e1-8c67-fdd9891a5326"
  3. "celeryev.f7a1d511-448b-42ad-9e51-52baee60e977"
  4. "_kombu.binding.celeryev"
  5. "celeryev.d4bd2c8d-57ea-4058-8597-e48f874698ca"
  6. `_kombu.binding.celery »

celeryev.643a99be-74e8-44e1-8c67-fdd9891a5326 devient rempli avec ces messages:

{"sw_sys": "Linux", "clock": 1, "timestamp": 1325914922.206671, "hostname": "064d9ffe-94a3-4a4e-b0c2-be9a85880c74", "type": "worker-online", "sw_ident": "celeryd", "sw_ver": "2.4.5"} 

Toute idée ce que je peux faire pour purger ces messages périodiquement?

Répondre

1

Est-ce une solution?

  1. en plus de l'ensemble _kombu.bindings.celeryev il y aura par exemple. celeryev.i-suis-vivant. des touches avec un ensemble TTL (par exemple 30 secondes);
  2. Le processus celeryev s'ajoute aux liaisons et périodiquement (par exemple, toutes les 5 secondes) met à jour le celeryev.i-am-alive. touche pour réinitialiser le TTL;
  3. avant d'envoyer les vérifications de processus de travail d'événement non seulement se connecte sur _kombu.bindings.celeryev mais l'individu celeryev.i-am-alive. Si la clé n'est pas trouvée (expirée), elle est retirée de _kombu.bindings.celeryev (et peut-être les commandes del celeryev ou expire celeryev.

Nous ne pouvons pas simplement utiliser la commande keys car c'est O (N) où N est le nombre total de clés dans DB. Les TTL peuvent être difficiles sur Redis < 2.1 bien.

expire celeryev. au lieu de del celeryev. peut être utilisé afin de permettre au consommateur céleri hors ligne temporaire de faire revivre, mais je ne sais pas si cela vaut la peine.

author

lien
+0

est en baisse, c'est pourquoi vous ne publiez pas de liens, vous postez la solution. –

Questions connexes