Sidekiq에 300만 개 이상의 대기 중인 작업이 표시되는 경우, 큐 생성을 어떻게 중단하나요?

방금 전부 정리했는데 또 3k가 생겼네요

관리자 대시보드에서 채팅이나 요약 설정을 찾아보려 했지만 아무것도 발견되지 않았습니다.

이게 어디서 오는 건지 아시는 분 계신가요? :sob:

P.s. 이 잡들 때문에 제 사이트가 엄청 느려집니다 :sob:

Sidekiq의 Retries 탭에는 어떤 항목이 있나요?

여기에는 재시도 중인 작업이 6개 있습니다. 이는 괜찮은 수치이며 그 이유를 알고 있습니다.

만약 이 숫자가 1,000개 단위로 올라간다면 좋지 않은 상황이며 조치가 필요합니다.

이메일 로그나 서버 오류 로그 /logs에 오류가 있나요?

고려해 볼 사항들:

이메일 서비스 제공업체가 요청을 제한(throttling)하고 있나요? 현재 서비스 등급에 대한 속도 제한(rate limit)을 초과했나요? 해당 업체에 요금을 납부했나요?

0개입니다

로그에 이메일 관련 문제가 있는 것 같지는 않습니다.

채팅 요약과 관련된 설정을 끄거나, 아예 채팅을 꺼야 할까요?

대부분 큐에 있는 작업이 모두 UserEmail 작업인가요?

이메일 서비스 대시보드(이메일 서비스 제공업체 쪽의 대시보드이며 Discourse가 아닙니다)를 확인해 보시고, 거기에 관련 정보가 있는지 살펴보세요

네, 거의 모든 것이 사용자 이메일 작업입니다.

Mailgun을 확인해 보았습니다(제 계정에서 실행 중인 인스턴스 4개).

첫 번째 인스턴스가 이 문제를 겪는 유일한 경우이며, 날짜에는 문제가 없어 보입니다. 로그도 확인해 보았지만 의심스러운 내용은 발견되지 않았습니다.

감사 기록(audit trail)이 있나요? 지속적으로 전송되는 메일의 기록을 확인할 수 있나요?

마지막으로 전송된 메일은 언제인가요?

이런 식으로요?

그리고 마지막 항목은 12분 전으로 해야 합니다.

일부는 통과되고 있지만, 처리 속도가 충분히 빠른 건가요?

어떻게 확인할 수 있나요?

discourse(관리자/이메일/발송)에서 채팅 요약 이메일이 하루에 5~6통, 대부분 1통이거나 아예 없는 등 매우 낮은 빈도로 발송된 것을 확인했습니다. :sob: 그런데 왜 sidekiq에 이렇게 많은 작업이 생성되는 걸까요?

관리자 화면에서 이메일 로그를 확인해 보세요. 더 명확한 정보를 얻을 수 있을 겁니다.

한 가지 눈치챈 점은 sidekiq 큐 문제가 3.4.0.beta4-dev로 업그레이드한 직후 시작되었다는 것입니다. 비슷한 시점에 설치한 다른 인스턴스에도 문제가 있는 것 같습니다(현재 확인 중).

또한 ID를 살펴보니 시스템이 모든 사용자에게 채팅 요약을 보내려고 시도하는 것 같습니다. :thinking:
이것이 정상적인가요?

업데이트:
채팅을 끄면 해당 작업이 다시 큐에 쌓이지 않지만, 제 사이트는 채팅 기능이 어느 정도 필요하고 다른 해결책을 계속 찾고 있습니다.

추가 업데이트:
채팅 기능을 2일간 껐다가 다시 켜고, 채팅 채널 보관 기간을 180일에서 3일로 변경했습니다. 이제 정상적으로 작동하는 것 같으며 계속 지켜볼 예정입니다.

02/01 업데이트:

보관 기간을 7일로 설정했고, 현재 대기열에 있는 작업이 약 1,101,685개입니다. 서버가 이 양을 처리할 수 있는 것 같고 사이트가 느려지지 않는 것 같습니다.

@th21 사용자 수와 채팅 채널 수는 몇 개인가요?

low 큐가 처리되는 속도는 얼마나 빠르나요(아니면 느리나요 :cry:)?

9k명의 사용자와 3개의 채널(기본 스태프 채널 1개 포함)

이것이 현재 상태입니다.

위에서 언급한 변경 사항을 적용하기 전에, low 큐의 크기는 결코 감소하지 않는 것 같았습니다.

@th21 죄송합니다. 실제로 버그였고, 다음을 통해 수정될 예정입니다.

채팅에서 "읽지 않은 멘션 또는 DM이 있는 사용자"를 모두 나열하는 쿼리가 있는데, 너무 교묘하게 만들려다 보니 오히려 오류가 발생했습니다. 채널 내 멘션이나 DM의 읽지 않은 항목에 대해 “채팅 요약”(즉, 이메일 알림)을 큐에 넣어야 하는데, 대신 모든 메시지에 대해 작업을 큐에 넣었습니다 :expressionless: 해당 작업이 5분마다 실행되었기 때문에, 쓸모없는 작업들로 sidekiq가 쉽게 부풀어 올랐습니다… (참고: 멘션을 검색할 수 없었기 때문에 다행히 이메일은 발송되지 않았습니다).

감사합니다. 이 커밋이 test-passed에 병합될 예정된 시간은 언제인가요?

48시간 이내

@th21 검토와 병합이 완료되었습니다 :+1: