Sellerie und Redis gehen nicht mehr aus dem Speicher

9

Ich habe eine Django-App für Heroku bereitgestellt, mit einem Arbeitsprozess, in dem Sellerie (+ Sellerie für Überwachung) läuft. Ich verwende die Redis-Datenbank von RedisToGo als Broker. Mir ist aufgefallen, dass Redis nicht mehr genügend Speicher hat.

So sieht mein Procfile aus:

%Vor%

Hier ist die Ausgabe von KEYS *:

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

celeryev.643a99be-74e8-44e1-8c67-fdd9891a5326 füllt sich mit diesen Nachrichten:

%Vor%

Irgendeine Idee, was ich tun kann, um diese Nachrichten regelmäßig zu löschen?

    
Bilal and Olga 09.01.2012, 05:29
quelle

1 Antwort

1

Ist das eine Lösung?

  1. zusätzlich zu _kombu.bindings.celeryev wird dort z.B. selleryev.i-am-lebendig. Tasten mit TTL-Einstellung (z. B. 30 s);
  2. Selleryev-Prozess fügt sich zu Bindungen hinzu und aktualisiert periodisch (z.B. alle 5 Sekunden) den Selleryev.i-am-alive. Taste zum Zurücksetzen der TTL;
  3. vor der Veranstaltung Arbeitsprozess überprüft das Senden nicht nur smembers auf _kombu.bindings.celeryev aber die einzelnen celeryev.i-am-Leben. Tasten so gut und wenn Schlüssel nicht gefunden wird (abgelaufen), dann wird sie von _kombu.bindings.celeryev entfernt (und vielleicht die del celeryev. oder celeryev ablaufen. Befehle ausgeführt).

Wir können nicht einfach den Befehl keys verwenden, weil es O (N) ist, wobei N die Gesamtzahl der Schlüssel in DB ist. TTLs können bei redis & lt; tricky & lt; 2.1 obwohl.

verfallen Selleryev. anstelle von del Selleryev. kann verwendet werden, um temporäre offline Selleryev Verbraucher zu beleben, aber ich weiß nicht, ob es wert ist.

Autor

    
Boris S 13.02.2012 04:09
quelle