Używam selera na rabbitmq. Wysłałem tysiące wiadomości do kolejki i są one przetwarzane pomyślnie i wszystko działa dobrze. Jednak liczba wiadomości w kilku kolejkach rabbitmq rośnie dość duża (setki tysięcy elementów w kolejce). Kolejki mają nazwę celeryev.[...]
(patrz zrzut ekranu poniżej). Czy to właściwe zachowanie? Jaki jest cel tych kolejek i czy nie powinny one być regularnie usuwane? Czy istnieje sposób na ich regularne oczyszczanie, myślę, że zajmują one sporo miejsca na dysku.selera Kolejka w RabbitMQ staje się bardzo duża
Odpowiedz
Można użyć opcji CELERY_EVENT_QUEUE_TTL
seler (tylko pracy z AMQP), który będzie ustawić czas wygaśnięcia komunikatu, po którym zostanie usunięty z kolejki.
użytku Seler celeryev
poprzedzone kolejki (i wymiany) dla monitoring można skonfigurować go tak, jak chcesz lub wyłączyć na wszystkich (celery control disable_events
).
Można ograniczyć rozmiar kolejki w RabbitMQ z x-max długości kolejka deklaracja argumentów
Dla każdej innej osoby, która ma problemy z kolejką celeryev
, która staje się bardzo duża i zagraża przestrzeni dyskowej na serwerze rabbitmq, strzeż się akceptowanej odpowiedzi! Oto moja sugestia. Wystarczy wydać polecenie na przykład RabbitMQ:
rabbitmqctl set_policy limit_celeryev_queues "^celeryev\." '{"max-length":1000000}' --apply-to queues
To ograniczy każdą kolejkę na literę „celeryev” do 1 mln wpisów. Zrobiłem kilka eksperymentów z zablokowaną instancją flower
powodującą zbiegającą się kolejkę seereryev, a ustawienie CELERY_EVENT_QUEUE_TTL/CELERY_EVENT_QUEUE_EXPIRES nie pomogło w kontrolowaniu wielkości kolejki.
Podczas moich testów rozpocząłem proces flower
, następnie SIGSTOP wykonałem i obserwowałem, jak kolejka selerowa zaczyna uciekać. Żadne z tych dwóch ustawień nie pomogło w ogóle. Potwierdziłem SIGCONT, że proces flower
spowoduje szybkie przywrócenie kolejki do 0. Nie jestem pewien, dlaczego te dwa pokrętła nie pomogły, ale może to mieć coś wspólnego z tym, jak RabbitMQ implementuje te dwa ustawienia.
Po pierwsze, Per-Message TTL odpowiadający CELERY_EVENT_QUEUE_TTL
ustala tylko czas wygaśnięcia dla każdej pozycji kolejki - AIUI, nie usunie automatycznie wiadomości z kolejki, aby zaoszczędzić miejsce po wygaśnięciu. Po drugie, Queue TTL odpowiadające CELERY_EVENT_QUEUE_EXPIRES
mówi, że "... gwarantuje, że kolejka zostanie usunięta, jeśli nie była używana przez co najmniej okres ważności". Uważam jednak, że ich definicja "nieużywanego" może być zbyt rygorystyczna, aby można się było na nią natknąć np. przeciążony, zablokowany lub zabity proces kwiatowy.
EDIT: Niestety, jeden problem z tą sugestią jest to, że set_policy ... apply-to queues
wpłynie tylko istniejących kolejki i kwiat może i będzie tworzyć nowych kolejki, które mogą przelewowy.
Wystarczy ustawić konfigurację dla swojego selera.
Jeśli chcesz uniknąć Seler od tworzenia celeryev.*
kolejki:
CELERY_SEND_EVENTS = False # Will not create celeryev.* queues
Jeśli potrzebujesz tych kolejek do celów monitoringu (CeleryFlower na przykład), można regularnie oczyścić je:
CELERY_EVENT_QUEUE_EXPIRES = 60 # Will delete all celeryev. queues without consumers after 1 minute.
rozwiązanie pochodzi stąd: https://www.cloudamqp.com/docs/celery.html
- 1. Kolejka RabbitMQ peeking
- 2. Postgresql: offset + limit staje się bardzo wolny
- 3. Dostęp odmówił użytkownika RabbitMQ & selera
- 4. Tabela systemowa CouchDB 2 global_changes staje się szalenie duża
- 5. GMSPolyline bardzo duża kolec pamięci
- 6. Tymczasowa kolejka wykonana w selerze
- 7. JQuery ajax zawiesza się gdy odpowiedź jest bardzo duża
- 8. Czy istnieje sposób na utrzymanie trwałości selera/RabbitMQ?
- 9. Kiedy pracownik selera potwierdza firmie RabbitMQ, że ma zadanie?
- 10. Pobieranie długości kolejki za pomocą Selera (RabbitMQ, Django)
- 11. Jak monitorować kolejki zdrowia w selera
- 12. Kiedy oprogramowanie staje się "zastrzeżone"?
- 13. Kompilator TypeScript staje się wolny?
- 14. Trwała kolejka RabbitMQ nie działa (serwer RPC, klient RPC)
- 15. Który typ instancji RDS ma lepsze IO: Bardzo duża instancja DB lub bardzo duża instancja dużej pamięci
- 16. lista ASP.NET MVC post staje się zerowa w bardzo dziwnych okolicznościach
- 17. Dlaczego warto używać Celery zamiast RabbitMQ?
- 18. Kiedy funkcja @ staje się przydatna?
- 19. NavigateUrl = "#" staje się href = "SubFolder/#"?
- 20. Żądanie POST staje się GET
- 21. . Szybka trwała kolejka .NET
- 22. Ekwiwalent selera dla JoinableQueue
- 23. atrybut danych staje się całkowitą
- 24. Moc obliczeniowa Azure: bardzo duża maszyna wirtualna powolna
- 25. Kolejka NSOperation zachowuje się niepoprawnie
- 26. Kolejka JMS jest pełna
- 27. Oddzwonienie do selera apply_async
- 28. wersja Zgromadzenie „0,001" staje się” 0,1"
- 29. Pomiar czasu wykonywania zadania selera
- 30. Reorder kolejka w ThreadPoolExecutor Java
Czy istnieje sposób na zmniejszenie lub ograniczenie pamięci zdarzeń, a nie całkowite wyłączenie? – speedplane
Czy próbowałeś argumentów --maxrate i --frekwencja (lub inne?), Które mogą być umieszczone w CELERYEV_OPTS, myślę – pinepain