Mam następującą konfigurację:Jak monitorować kolejki zdrowia w selera
- Generic pracownik basen z 100 pracowników
- Wysoki priorytet basen pracownika z 50 pracowników
- użyłem takich dużych liczb, ponieważ większość czasu moje zadania spędzamy czekając na I/o z bardzo długich czasów oczekiwania (robi żądań HTTP, które mogą trwać do 20s odpowiedzi)
- Korzystanie RabbitMQ jako broker
- mam skonfigurować celeryd jako demona przy użyciu init .d scripts z celery'd github, o następujących parametrach:
CELERYD_OPTS="--time-limit=600 -c:low_p 100 -c:high_p 50 -Q:low_p low_priority_queue_name -Q:high_p high_priority_queue_name"
Mój problem jest, czasami wydaje się kolejka "back up" ... to będzie zatrzymać czasochłonne zadania. Wydaje się, że są do scenariuszy to:
- Jest powolne narastanie „potwierdzonych” wiadomości na maklera, chociaż
celery inspect active
pokaże, że nie wszyscy pracownicy są wykorzystane - to znaczy, że tylko będzie zobacz kilka aktywnych zadań. - Kolejka przestanie spożywać nowe zadania bez gromadzenia danych.
- Kiedy w jego „martwy” państwa, używając
strace
na pracownika Procesy powracają nic ... całkowicie zerową aktywność od pracownika
Byłbym wdzięczny za wszelkie informacje lub wskazówki na temat:
- Jak Mogę to debugować. Mogę użyć
strace
, aby zobaczyć, co robią procesy robocze, ale jak dotąd użyteczne w informowaniu mnie, że pracownik wisi - Jak mogę to monitorować i możliwe jest automatyczne przywracanie. Istnieje wiele narzędzi do zarządzania selerem (
flower
ievents
, ale oba są doskonałe w czasie rzeczywistym - ale nie mają żadnej zautomatyzowanej funkcji monitorowania/alarmowania). Czy lepiej napisać własne narzędzia do monitorowania za pomocą supervisord?
Również ja rozpoczynam moje zadania z Django selera
Czy ostatecznie rozwiązałeś ten problem? – bouke
To jest stara, ale dwie przyczyny kopii zapasowych, o których wiem, że są: (1) tworzysz zadania w ramach zadań. Jeśli to zrobisz, w końcu dojdziesz do punktu, w którym nie masz pracownika, który wykona zadanie w ramach zadania, a będziesz zamrażać. (2) Jeśli używasz żądań, robisz dużo pobrań lub cokolwiek innego, nie ma on domyślnego limitu czasu, więc może całkowicie zawiesić się, jeśli masz błąd pobierania. Gdy pracownik zamarza, robi się to. – mlissner