가져오기를 위한 Sidekiq 구성
GitLab v19.5Offering: GitLab Self-Managed
요약
가져오기 도구는 그룹과 프로젝트의 가져오기·내보내기를 처리하기 위해 Sidekiq job에 크게 의존합니다. 이 문제를 해결하려면 가져오기 도구 job을 전용 Sidekiq 큐로 라우팅하고, 그 큐를 처리할 전용 Sidekiq 프로세스를 할당합니다.
가져오기 도구는 그룹과 프로젝트의 가져오기·내보내기를 처리하기 위해 Sidekiq job에 크게 의존합니다. 이 가운데 일부 job은 CPU와 메모리를 많이 소모하고 완료까지 오래 걸리기 때문에 다른 job의 실행에 영향을 줄 수 있습니다.
이 문제를 해결하려면 가져오기 도구 job을 전용 Sidekiq 큐로 라우팅하고, 그 큐를 처리할 전용 Sidekiq 프로세스를 할당합니다.
예를 들어 다음 구성을 사용할 수 있습니다.
sidekiq['concurrency'] = 20
sidekiq['routing_rules'] = [
# Route import and export jobs to the importer queue
['feature_category=importers', 'importers'],
# Route all other jobs to the default queue by using wildcard matching
['*', 'default']
]
sidekiq['queue_groups'] = [
# Run a dedicated process for the importer queue
'importers',
# Run a separate process for the default and mailer queues
'default,mailers'
]
이 구성에서는 다음과 같이 동작합니다.
- 전용 Sidekiq 프로세스가 importer 큐를 통해 가져오기·내보내기 job을 처리합니다.
- 다른 Sidekiq 프로세스가 나머지 job 전부(default 및 mailer 큐)를 처리합니다.
- 두 Sidekiq 프로세스 모두 기본적으로 20개의 동시 스레드로 실행되도록 구성됩니다. 메모리가 넉넉하지 않은 환경에서는 이 값을 줄이는 방안을 검토합니다.
추가 프로세스 구성#
인스턴스 리소스가 더 많은 동시 job을 감당할 수 있다면, Sidekiq 프로세스를 추가로 구성해 마이그레이션 속도를 높일 수 있습니다.
Sidekiq 프로세스의 최대 개수를 정할 때는 다음을 고려합니다.
- 프로세스 수는 사용 가능한 CPU 코어 수를 넘지 않아야 합니다.
- 프로세스마다 최대 2 GB의 메모리를 사용할 수 있으므로, 추가 프로세스를 감당할 메모리가 인스턴스에 있는지 확인합니다.
- 프로세스마다
sidekiq['concurrency']에 정의된 스레드 수만큼 데이터베이스 연결이 늘어납니다.
예를 들면 다음과 같습니다.
sidekiq['queue_groups'] = [
# Run three processes for importer jobs
'importers',
'importers',
'importers',
# Run a separate process for the default and mailer queues
'default,mailers'
]
이렇게 구성하면 여러 Sidekiq 프로세스가 가져오기·내보내기 job을 동시에 처리하므로, 인스턴스 리소스가 충분한 한 마이그레이션 속도가 빨라집니다.