Geo 튜닝
GitLab v19.5Offering: GitLab Self-Managed
요약
사이트가 백그라운드에서 동시에 실행하는 작업 수를 제한할 수 있습니다. 오른쪽 상단에서 Admin을 선택합니다. 왼쪽 사이드바에서 Geo > Sites를 선택합니다. 튜닝할 보조 사이트의 Edit을 선택합니다. Tuning settings 아래에는 Geo 성능을 개선하기 위해 조정할 수 있는 변수가 여러 개 있습니다.
사이트가 백그라운드에서 동시에 실행하는 작업 수를 제한할 수 있습니다.
동기화/검증 동시성 값 변경#
기본 사이트에서 다음을 수행합니다.
-
오른쪽 상단에서 Admin을 선택합니다.
-
왼쪽 사이드바에서 Geo > Sites를 선택합니다.
-
튜닝할 보조 사이트의 Edit을 선택합니다.
-
Tuning settings 아래에는 Geo 성능을 개선하기 위해 조정할 수 있는 변수가 여러 개 있습니다.
- Repository synchronization concurrency limit
- File synchronization concurrency limit
- Container repositories synchronization concurrency limit
- Verification concurrency limit
동시성 값을 높이면 스케줄링되는 job 수가 늘어납니다. 다만 사용 가능한 Sidekiq 스레드 수를 함께 늘리지 않으면 병렬 다운로드가 늘어나지 않을 수 있습니다. 예를 들어 리포지터리 동기화 동시성을 25에서 50으로 높였다면 Sidekiq 스레드 수도 25에서 50으로 늘리는 편이 좋습니다. 자세한 내용은 Sidekiq 동시성 문서를 참고합니다.
Verification concurrency limit은 모든 데이터 유형을 합산해 한 사이트에서 동시에 실행되는 전체 검증 job 수에 적용되는 단일 전역 제한입니다. 실제 동시 실행 수는 구성한 값과 같습니다.
GitLab 19.2 이하에서는 구성한 값을 데이터 유형 수로 나눈 뒤 적용했기 때문에, 실제 동시 실행 수가 설정값보다 낮았습니다. GitLab 19.3으로 업그레이드하면 GitLab이 각 사이트의 저장된 값을 다시 계산해 실제 동시 실행 수를 업그레이드 전과 비슷하게 유지합니다. 그 결과 업그레이드 후 저장된 값이 더 낮아질 수 있습니다. 값을 확인하고 필요에 따라 다시 조정합니다.
낮은 기본값 튜닝#
새 Geo 사이트를 구축할 때 과도한 부하를 피하도록, GitLab 18.0부터 Geo의 동시성 설정은 대부분의 환경에서 낮은 기본값으로 지정됩니다. 이 값을 높이는 절차는 다음과 같습니다.
- 오른쪽 상단에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Geo > Sites를 선택합니다.
- 어떤 데이터 유형의 진행이 지나치게 느린지 판단합니다.
- 기본 사이트와 보조 사이트의 부하 메트릭을 관찰합니다.
- 보수적으로 동시성 제한을 10씩 높입니다.
- 진행 상황과 부하 메트릭의 변화를 최소 3분간 관찰합니다.
- 부하 메트릭이 원하는 최댓값에 도달하거나 동기화와 검증이 원하는 속도로 진행될 때까지 값을 계속 높입니다.
복제되는 데이터 양 줄이기#
기본 사이트에 보존된 모든 파일은 모든 보조 사이트에 저장, 동기화, 검증되어야 하며 Geo 메트릭 수집에도 포함됩니다. 가치가 없는 데이터를 삭제하는 것이 동시성을 높이는 것보다 더 효과적인 경우가 많으며, 보조 사이트를 추가하거나 다시 구축할 때 초기 동기화 시간도 단축됩니다.
CI/CD job 아티팩트가 보통 가장 큰 비중을 차지합니다. 용량을 줄이려면 다음을 수행합니다.
- 아티팩트가 만료되는지 확인합니다. 아티팩트는
기본 아티팩트 만료 기간(기본값 30일)이 지나거나,
job별로
artifacts:expire_in으로 설정한 기간이 지나면 자동으로 삭제됩니다. 아티팩트가 만료되면 GitLab은 파일과 데이터베이스 레코드를 영구적으로 삭제하고 Geo 삭제 이벤트를 게시하므로 각 보조 사이트가 동기화된 사본과 레지스트리 항목을 제거합니다. 테이블이 작아지면 동기화, 검증, Geo 메트릭 수집 부하가 직접 줄어듭니다. - 최근 성공한 파이프라인의 아티팩트 유지 설정을 검토합니다. 이 설정을 켜면 각 Git ref의 가장 최근 성공한 파이프라인의 아티팩트는 만료되지 않습니다. 활성 브랜치와 태그가 많은 인스턴스에서는 이 설정이 많은 수의 아티팩트를 무기한 보존할 수 있습니다.
- 만료 기간이 없는 아티팩트를 정리합니다. 만료 정책이 적용되기 전에 생성된 아티팩트는 만료일이 없으며 만료 워커가 삭제하지 않습니다. 이를 찾아 제거하려면 특정 만료 기간(또는 만료 없음)의 아티팩트가 있는 프로젝트와 빌드 나열과 오래된 빌드와 아티팩트 삭제를 참고합니다. 데이터베이스 레코드 없이 디스크에 남은 아티팩트 파일을 제거하려면 고아 아티팩트 파일 정리 Rake 태스크를 사용합니다.
LFS 오브젝트와 패키지 파일 같은 다른 복제 데이터 유형에도 같은 원칙이 적용됩니다. 컨테이너 레지스트리 이미지에는 정리 정책을 사용합니다.
리포지터리 재검증#
자동 백그라운드 검증을 참고합니다.