2012-01-09 15 views
9

Tengo una aplicación Django desplegada en Heroku, con un proceso de trabajo con apio (+ apiocam para monitorización). Estoy usando la base de datos Redis de RedisToGo como intermediario. Noté que a Redis se le está acabando la memoria.Apio y Redis se siguen quedando sin memoria

Esto es lo que se ve mi procfile como:

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 

Aquí está la salida de llaves '*':

  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 está siendo llenado con estos mensajes:

{"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"} 

Cualquier idea ¿Qué puedo hacer para purgar estos mensajes periódicamente?

Respuesta

1

¿Es eso una solución?

  1. además de _kombu.bindings.celeryev establecido habrá p. celeryev.i-am-alive. teclas con conjunto TTL (por ejemplo, 30 segundos);
  2. El proceso de apilación se agrega a los enlaces y periódicamente (por ejemplo, cada 5 segundos) actualiza el apiovivo.i-am-alive. clave para restablecer el TTL;
  3. antes de enviar el proceso del trabajador de eventos verifica no solo las muestras en _kombu.bindings.celeryev, sino también el apiario celeryev.i-am-alive. claves también y si la clave no se encuentra (expiró), entonces se elimina de _kombu.bindings.celeryev (y tal vez se ejecuten los comandos del apioejemplo o vencimiento del apéndice).

no podemos simplemente usar el comando keys porque es O (N) donde N es el número total de claves en DB. Los TTL pueden ser engañosos en redis < 2.1 embargo.

expire apéryev. en lugar de del apioev. se puede utilizar para permitir que el consumidor de apio temporario sin conexión reviva, pero no sé si lo vale.

author

+0

enlace está inactivo, por eso no publicar enlaces, que publique la solución. –

Cuestiones relacionadas