Sidekiq job 마이그레이션 Rake 작업
Sidekiq 라우팅 규칙을 변경할 때 job을 안전하게 마이그레이션합니다.
Warning 이 작업은 매우 드문 경우에만 수행해야 합니다. 대부분의 GitLab 인스턴스에는 권장하지 않습니다. Sidekiq 라우팅 규칙을 사용하면 관리자가 특정 백그라운드 job을 일반 큐에서 대안 큐로 재라우팅할 수 있습니다. 기본적으로 GitLab은 백그라운드 job 유형당 하나의 큐를 사용합니다. GitLab에는 400개 이상의 백그라운드 job 유형이 있으므로 이에 상응하는 400개 이상의 큐가 있습니다. 대부분의 관리자는 이 설정을 변경할 필요가 없습니다. 특히 대용량 백그라운드 job 처리 워크로드의 경우 GitLab이 수신 대기하는 큐 수로 인해 Redis 성능이 저하될 수 있습니다. Sidekiq 라우팅 규칙이 변경되면 관리자는 job을 완전히 잃어버리지 않도록 마이그레이션 시 주의해야 합니다. 기본 마이그레이션 단계: 이전 큐와 새 큐 모두 수신 대기합니다. 라우팅 규칙을 업데이트합니다. 변경 사항을 적용하려면 GitLab을 재구성합니다 . 큐에 대기 중인 job과 향후 job 마이그레이션을 위한 Rake 작업 을 실행합니다. 이전 큐 수신 대기를 중지합니다. 큐에 대기 중인 job과 향후 job 마이그레이션 # 4단계에서는 Redis에 이미 저장되었지만 나중에 실행될 예정인 job의 일부 Sidekiq job 데이터를 다시 작성합니다. 나중에 실행될 두 가지 job 세트: 예약된 job과 재시도될 job. 각 세트를 마이그레이션하는 별도의 Rake 작업을 제공합니다: 재시도될 job의 경우 gitlab:sidekiq:migrate_jobs:retry . 예약된 job의 경우 gitlab:sidekiq:migrate_jobs:schedule . 아직 실행되지 않은 큐에 대기 중인 job도 Rake 작업으로 마이그레이션할 수 있습니다( GitLab 15.6에서 사용 가능 ): 비동기적으로 수행될 큐에 대기 중인 job의 경우 gitlab:sidekiq:migrate_jobs:queued . 대부분의 경우 세 가지를 동시에 실행하는 것이 올바른 선택입니다. 세 가지 별도의 작업을 통해 필요한 경우 더 세밀한 제어가 가능합니다. 세 가지를 동시에 실행하려면( GitLab 15.6에서 사용 가능 ): # omnibus-gitlab sudo gitlab-rake gitlab:sidekiq:migrate_jobs:retry gitlab:sidekiq:migrate_jobs:schedule gitlab:sidekiq:migrate_jobs:queued # 소스 설치 bundle exec rake gitlab:sidekiq:migrate_jobs:retry gitlab:sidekiq:migrate_jobs:schedule gitlab:sidekiq:migrate_jobs:queued RAILS_ENV=production
