2012-01-09 18 views
9

Ho un'app di Django distribuita su Heroku, con un processo di lavoro che esegue il sedano (+ celerycam per il monitoraggio). Sto usando il database Redis di RedisToGo come broker. Ho notato che Redis continua a esaurire la memoria.Celery e Redis continuano a esaurire la memoria

Questo è ciò che il mio procfile assomiglia:

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 

ecco l'output di chiavi '*':

  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 è sempre riempito con questi messaggi:

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

Qualsiasi idea cosa posso fare per eliminare periodicamente questi messaggi?

risposta

1

È una soluzione?

  1. oltre a _kombu.bindings.celeryev impostato ci sarà, ad es. celeryev.i-am-alive. tasti con set TTL (ad esempio 30 secondi);
  2. processo celeryev si aggiunge ai binding e periodicamente (ad esempio ogni 5 secondi) aggiorna il celeryev.i-am-alive. tasto per resettare il TTL;
  3. prima di inviare il processo di lavoro dell'evento controlla non solo smembers su _kombu.bindings.celeryev ma il singolo celeryev.i-am-alive. anche le chiavi e se la chiave non viene trovata (scaduta), viene rimossa da _kombu.bindings.celeryev (e forse i comandi del celeryev o expery celeryev vengono eseguiti).

non possiamo semplicemente usare il comando keys perché è O (N) dove N è il numero totale di chiavi in ​​DB. I TTL possono essere complicati sui redis < 2.1.

scadenza celeryev. invece di del celeryev. può essere utilizzato per consentire al consumatore temporaneo offline in celeryev di rianimare, ma non so se ne valga la pena.

author

+0

collegamento è giù, ecco perché non pubblicare link, si registra la soluzione. –

Problemi correlati