InfoGrab DocsInfoGrab Docs

가져오기를 위한 Sidekiq 구성

요약

가져오기 도구는 그룹과 프로젝트의 가져오기·내보내기를 처리하기 위해 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을 동시에 처리하므로, 인스턴스 리소스가 충분한 한 마이그레이션 속도가 빨라집니다.

관련 주제#

가져오기를 위한 Sidekiq 구성

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: 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을 동시에 처리하므로, 인스턴스 리소스가 충분한 한 마이그레이션 속도가 빨라집니다.

관련 주제#