InfoGrab DocsInfoGrab Docs

GitLab 애플리케이션 제한

요약

GitLab은 대부분의 대규모 애플리케이션과 마찬가지로, 최소한의 성능 품질을 유지하기 위해 특정 기능에 제한을 적용합니다. 인스턴스 구성 페이지에서 현재 GitLab 인스턴스에 사용되는 일부 설정 정보를 확인할 수 있습니다.

GitLab은 대부분의 대규모 애플리케이션과 마찬가지로, 최소한의 성능 품질을 유지하기 위해 특정 기능에 제한을 적용합니다. 일부 기능을 무제한으로 허용하면 보안, 성능, 데이터에 영향을 미치거나 애플리케이션에 할당된 리소스가 소진될 수 있습니다.

인스턴스 구성#

인스턴스 구성 페이지에서 현재 GitLab 인스턴스에 사용되는 일부 설정 정보를 확인할 수 있습니다.

구성한 제한에 따라 다음 정보를 볼 수 있습니다.

  • SSH 호스트 키 정보

  • CI/CD 제한

  • GitLab Pages 제한

  • 패키지 레지스트리 제한

  • 속도 제한

  • 크기 제한

이 페이지는 모든 사람이 볼 수 있으므로, 인증되지 않은 사용자는 자신에게 관련된 정보만 볼 수 있습니다.

인스턴스 구성 페이지를 방문하려면:

  • 왼쪽 사이드바에서 도움말 ( question-o ) > 도움말을 선택합니다.

  • 도움말 페이지에서 현재 인스턴스 구성 확인을 선택합니다.

직접 URL은 <gitlab_url>/help/instance_configuration입니다. GitLab.com에서는 https://gitlab.com/help/instance_configuration을 방문할 수 있습니다.

속도 제한#

속도 제한은 GitLab의 보안과 내구성을 향상시키는 데 사용될 수 있습니다.

속도 제한 구성에 대해 자세히 알아보세요.

이슈 생성#

이 설정은 이슈 생성 엔드포인트에 대한 요청 속도를 제한합니다.

이슈 생성 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

사용자 또는 IP별#

이 설정은 사용자 또는 IP별 요청 속도를 제한합니다.

사용자 및 IP 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

raw 엔드포인트별#

이 설정들은 raw 엔드포인트의 요청 속도를 제한합니다.

raw 엔드포인트 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한 (인증됨 및 인증되지 않음): 프로젝트 및 파일 경로당 분당 300개 요청.

  • 기본 속도 제한 (인증되지 않음): 모든 파일 경로에 걸쳐 프로젝트당 분당 800개 요청.

보호된 경로별#

이 설정은 특정 경로의 요청 속도를 제한합니다.

GitLab은 기본적으로 POST 요청에 대해 다음 경로를 속도 제한합니다:

'/users/password',
'/users/sign_in',
'/api/#{API::API.version}/session.json',
'/api/#{API::API.version}/session',
'/users',
'/users/confirmation',
'/unsubscribes/',
'/import/github/personal_access_token',
'/admin/session'

GitLab은 기본적으로 GET 요청에 대해 다음 경로를 속도 제한합니다:

'/users/sign_in_path'

보호된 경로 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 10번의 요청 이후, 클라이언트는 다시 시도하기 전에 60초를 기다려야 합니다.

패키지 레지스트리#

이 설정은 사용자 또는 IP별 Packages API 요청 속도를 제한합니다. 자세한 내용은 패키지 레지스트리 속도 제한을 참조하세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

Git LFS#

이 설정은 사용자별 Git LFS 요청 속도를 제한합니다. 자세한 내용은 GitLab Git Large File Storage (LFS) 관리를 읽어보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

Files API#

이 설정은 사용자 또는 IP 주소별 Files API 요청 속도를 제한합니다. 자세한 내용은 Files API 속도 제한을 읽어보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

더 이상 사용되지 않는 API 엔드포인트#

이 설정은 사용자 또는 IP 주소별 더 이상 사용되지 않는 API 엔드포인트의 요청 속도를 제한합니다. 자세한 내용은 더 이상 사용되지 않는 API 속도 제한을 읽어보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

가져오기 및 내보내기#

이 설정들은 그룹 및 프로젝트의 파일 가져오기 및 내보내기를 제한합니다.

제한 기본값 (사용자당 분당)
프로젝트 가져오기 6번 가져오기 요청
프로젝트 내보내기 6번 내보내기 요청
프로젝트 내보내기 다운로드 1번 다운로드 요청
그룹 가져오기 6번 가져오기 요청
그룹 내보내기 6번 내보내기 요청
그룹 내보내기 다운로드 1번 다운로드 요청

이 설정들은 구성할 수 있습니다.

직접 전송 마이그레이션#

히스토리
  • 허용되는 최대 마이그레이션 수 제한이 GitLab 15.9에서 도입되었습니다.
  • 구성 가능한 설정이 GitLab 16.3에서 도입되었습니다.

  • 마이그레이션에 대한 8시간 제한이 GitLab 16.7에서 제거되었습니다.

직접 전송으로 마이그레이션할 때 다음 제한이 적용됩니다.

제한 기본값 구성 가능
사용자당 분당 대상 GitLab 인스턴스별 마이그레이션 수. 6 아니요
아카이브 파일 압축 해제 대기 시간. 210초 아니요
NDJSON 행 길이. 50 MB 아니요
소스 인스턴스에서 빈 내보내기 상태가 발생할 때까지의 시간. 5분 아니요
소스 인스턴스에서 다운로드할 수 있는 관계 크기. 5 GiB
압축 해제된 아카이브 크기. 10 GiB

구성 가능한 제한 변경에 대한 자세한 내용은 가져오기 및 내보내기 설정을 참조하세요.

멤버 초대#

그룹 계층당 허용되는 최대 일일 멤버 초대 수를 제한합니다.

  • GitLab.com: Free 멤버는 하루에 20명을 초대할 수 있고, Premium 트라이얼 및 Ultimate 트라이얼 멤버는 하루에 50명을 초대할 수 있습니다.

  • GitLab Self-Managed: 초대는 제한되지 않습니다.

웹훅 속도 제한#

최상위 네임스페이스의 웹훅이 분당 호출될 수 있는 횟수를 제한합니다. 네임스페이스의 모든 프로젝트 및 그룹 웹훅이 이 제한을 공유합니다.

속도 제한을 초과하는 호출은 auth.log에 기록됩니다.

GitLab Self-Managed 인스턴스에 이 제한을 설정하려면 Plan Limits API를 사용하거나 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(web_hook_calls: 10)

제한을 0으로 설정하면 비활성화됩니다.

  • 기본 속도 제한: 비활성화됨 (무제한).

검색 속도 제한#

히스토리
  • GitLab 15.9에서 이슈, 머지 리퀘스트, 에픽 검색을 속도 제한에 포함하도록 변경되었습니다.
  • GitLab 16.0에서 인증된 요청에 대한 검색 범위에 속도 제한을 적용하도록 변경되었습니다.

이 설정은 다음과 같이 검색 요청을 제한합니다:

제한 기본값 (분당 요청 수)
인증된 사용자 30
인증되지 않은 사용자 10

분당 검색 속도 제한을 초과하는 검색 요청은 다음 오류를 반환합니다:

This endpoint has been requested too many times. Try again later.

자동 완성 사용자 속도 제한#

히스토리
  • GitLab 17.10에서 autocomplete_users_rate_limit 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • GitLab 18.1에서 일반 가용됩니다. 기능 플래그 autocomplete_users_rate_limit가 제거되었습니다.

이 설정은 자동 완성 사용자 요청을 다음과 같이 제한합니다:

제한 기본값 (분당 요청 수)
인증된 사용자 300
인증되지 않은 사용자 100

분당 자동 완성 속도 제한을 초과하는 자동 완성 요청은 다음 오류를 반환합니다:

This endpoint has been requested too many times. Try again later.

파이프라인 생성 속도 제한#

히스토리
  • GitLab 15.0에서 도입되었습니다.

이 설정은 파이프라인 생성 엔드포인트에 대한 요청 속도를 제한합니다.

파이프라인 생성 속도 제한에 대해 자세히 알아보세요.

Gitaly 동시성 제한#

클론 트래픽은 Gitaly 서비스에 큰 부하를 줄 수 있습니다. 이러한 워크로드가 Gitaly 서버를 압도하는 것을 방지하기 위해 Gitaly 구성 파일에서 동시성 제한을 설정할 수 있습니다.

Gitaly 동시성 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 비활성화됩니다.

이슈, 머지 리퀘스트, 또는 커밋당 댓글 수#

이슈, 머지 리퀘스트, 또는 커밋에 제출할 수 있는 댓글 수에는 제한이 있습니다. 제한에 도달하면 이벤트 기록이 손실되지 않도록 시스템 노트는 여전히 추가될 수 있지만, 사용자가 제출한 댓글은 실패합니다.

  • 최대 제한: 댓글 5,000개.

이슈, 머지 리퀘스트, 에픽의 댓글 및 설명 크기#

이슈, 머지 리퀘스트, 에픽의 댓글 및 설명 크기에는 제한이 있습니다. 제한보다 큰 텍스트 본문을 추가하려고 하면 오류가 발생하고, 항목도 생성되지 않습니다.

이 제한이 미래에 더 낮은 숫자로 변경될 수 있습니다.

  • 최대 크기: 약 100만 자 / 약 1 MB.

커밋 제목 및 설명 크기#

임의로 큰 메시지가 있는 커밋이 GitLab에 push될 수 있지만, 다음 표시 제한이 적용됩니다:

  • 제목 - 커밋 메시지의 첫 번째 줄. 1 KiB로 제한됩니다.

  • 설명 - 나머지 커밋 메시지. 1 MiB로 제한됩니다.

커밋이 push되면 GitLab은 제목과 설명을 처리하여 이슈(#123) 및 머지 리퀘스트(!123) 참조를 해당 이슈와 머지 리퀘스트의 링크로 교체합니다.

많은 수의 커밋이 있는 브랜치가 push되면, 마지막 100개 커밋만 처리됩니다.

리베이스 작업 중 크기#

커밋을 리베이스할 때, 크기 제한을 초과하는 커밋 메시지는 잘립니다. 이 제한은 커밋 제목 및 설명의 크기 제한과는 별개입니다.

  • 제한: 10,240바이트 (10 KB).

마일스톤 개요의 이슈 수#

마일스톤 개요 페이지에 로드되는 최대 이슈 수는 500개입니다. 수가 제한을 초과하면 페이지에 알림이 표시되고 마일스톤의 모든 이슈의 페이지화된 이슈 목록으로 링크됩니다.

  • 제한: 이슈 500개.

활동 기록 보존#

프로젝트 및 개인 프로필의 활동 기록은 3년으로 제한됩니다.

임베드된 메트릭 수#

성능상의 이유로 GitLab Flavored Markdown (GLFM)에 메트릭을 임베드할 때 제한이 있습니다.

  • 최대 제한: 100개 임베드.

HTTP 응답 제한#

최대 Gzip 압축 크기#

히스토리
  • GitLab 17.10에서 도입되었습니다.

이 설정은 압축 해제 후 Gzip 압축된 HTTP 응답에 허용되는 최대 크기(MiB)를 제한합니다.

기본 최대 크기는 100 MiB입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다.

ApplicationSetting.update(max_http_decompressed_size: 50)

아웃바운드 요청에서 최대 HTTP 응답 크기#

히스토리
  • GitLab 17.10에서 도입되었습니다.

이 설정은 압축 해제된 HTTP 응답에 허용되는 최대 크기(MiB)를 제한합니다. 통합, 임포터, 웹훅에 적용됩니다.

기본 최대 크기는 100 MiB입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다.

ApplicationSetting.update(max_http_response_size_limit: 60)

아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 오브젝트 수#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 오브젝트 수를 제한합니다. 오브젝트 수는 응답에서 :, ,, {, [의 발생 횟수를 기반으로 추정됩니다.

기본 최대 수는 1,000,000개 오브젝트입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_json_structural_chars: 500000)

아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 중첩 깊이#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 중첩 깊이를 제한합니다.

기본 최대 중첩 깊이는 32입니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_json_depth: 100)

아웃바운드 요청에서 XML HTTP 응답의 최대 허용 오브젝트 수#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 XML HTTP 응답의 최대 허용 오브젝트 수를 제한합니다. 오브젝트 수는 응답에서 <, =의 발생 횟수를 기반으로 추정됩니다.

기본 최대 수는 250,000개 오브젝트입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_xml_structural_chars: 500000)

아웃바운드 요청에서 CSV HTTP 응답의 최대 허용 오브젝트 수#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 CSV HTTP 응답의 최대 허용 오브젝트 수를 제한합니다. 오브젝트 수는 응답에서 ,, ;, \t, \r, \n의 발생 횟수를 기반으로 추정됩니다.

기본 최대 수는 250,000개 오브젝트입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_csv_structural_chars: 500000)

HTTP 요청 제한#

기본적으로 요청의 JSON 파라미터는 제한됩니다. 자세한 내용은 엔드포인트별 JSON 유효성 검사 제한을 참조하세요.

Linux package (Omnibus)

이 검사를 비활성화하려면:

- Puma를 실행하는 모든 노드에서 GITLAB_JSON_GLOBAL_VALIDATION_MODE 환경 변수를 설정합니다:

sudo -e /etc/gitlab/gitlab.rb
gitlab_rails['env'] = { 'GITLAB_JSON_GLOBAL_VALIDATION_MODE' => 'disabled' }

변경 사항이 적용되도록 업데이트된 노드를 재구성합니다:

sudo gitlab-ctl reconfigure

Helm chart (Kubernetes)

이 검사를 비활성화하려면 `--set gitlab.webservice.extraEnv.GITLAB_JSON_GLOBAL_VALIDATION_MODE="disabled"`를 사용하거나,

values 파일에 다음을 지정합니다:

gitlab:
  webservice:
    extraEnv:
      GITLAB_JSON_GLOBAL_VALIDATION_MODE: "disabled"

엔드포인트별 JSON 유효성 검사 제한#

일부 API 엔드포인트에는 특정 JSON 유효성 검사 제한이 있습니다.

엔드포인트 설명 메서드 최대 깊이 최대 배열 크기 최대 해시 크기 최대 전체 요소 최대 JSON 크기 모드
기타 모든 경로 기본 전체 32 50,000 50,000 100,000 0 (비활성화) enforced
/api/v4/projects/{id}/terraform/state/ Terraform 상태 POST 64 50,000 50,000 250,000 50 MB logging 1
/api/v4/packages/npm/-/npm/v1/security/{advisories/bulk audits/quick} NPM 인스턴스 패키지 POST 32 50,000 50,000 250,000 50 MB
/api/v4/groups/{id}/-/packages/npm/-/npm/v1/security/{advisories/bulk audits/quick} NPM 그룹 패키지 POST 32 50,000 50,000 250,000 50 MB
/api/v4/projects/{id}/packages/npm/-/npm/v1/security/{advisories/bulk audits/quick} NPM 프로젝트 패키지 POST 32 50,000 50,000 250,000 50 MB
/api/v4/internal/* 내부 API POST 32 50,000 50,000 0 (비활성화) 10 MB enforced
/api/v4/ai/duo_workflows/workflows/* GitLab Duo Workflow API POST 32 5,000 5,000 0 (비활성화) 25 MB enforced

각주:

  • Terraform 상태 최대 크기 제한은 애플리케이션 설정 API를 사용하여 max_terraform_state_size_bytes를 설정함으로써 지정할 수 있습니다.

환경 변수 구성#

다음 환경 변수들은 기본 제한과 유효성 검사 모드를 수정합니다:

환경 변수 목적 기본값 범위
GITLAB_JSON_MAX_DEPTH 기본 최대 중첩 깊이 32 기본 제한만
GITLAB_JSON_MAX_ARRAY_SIZE 기본 최대 배열 요소 50,000 기본 제한만
GITLAB_JSON_MAX_HASH_SIZE 기본 최대 해시 키 50,000 기본 제한만
GITLAB_JSON_MAX_TOTAL_ELEMENTS 기본 최대 전체 요소 100,000 기본 제한만
GITLAB_JSON_MAX_JSON_SIZE_BYTES 기본 최대 본문 크기 0 (비활성화) 기본 제한만
GITLAB_JSON_VALIDATION_MODE 기본 유효성 검사 모드 enforced 기본 제한만
GITLAB_JSON_GLOBAL_VALIDATION_MODE 모든 엔드포인트 모드 재정의 설정 안 됨 모든 엔드포인트 (전역 재정의)

GITLAB_JSON_GLOBAL_VALIDATION_MODE 환경 변수는 다음 모드 중 하나로 설정할 수 있습니다.

모드 설명
enforced 제한을 초과하는 요청을 유효성 검사하고 차단합니다 (HTTP 400 반환). 프로덕션 보호에 사용됩니다.
logging 위반 사항을 유효성 검사하고 기록하지만 요청은 통과시킵니다. 모니터링 및 디버깅에 사용됩니다. 모든 엔드포인트가 로그만 기록하여 enforced를 재정의합니다.
disabled 유효성 검사를 완전히 건너뜁니다. 비상 우회로 사용됩니다.

GITLAB_JSON_GLOBAL_VALIDATION_MODE 사용 시:

  • 경로별 구성이 기본 제한을 재정의하지만 전역 유효성 검사 모드는 재정의하지 않습니다.

  • enforced 모드에서 제한을 초과하면 응답은 JSON 오류 메시지가 포함된 HTTP 400입니다.

  • 전체 요소 수에는 전체 JSON 구조의 배열과 해시의 모든 요소가 포함됩니다.

웹훅 제한#

웹훅 속도 제한도 참조하세요.

웹훅 수#

GitLab Self-Managed 인스턴스의 그룹 또는 프로젝트 웹훅 최대 수를 설정하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

# For project webhooks
Plan.default.actual_limits.update!(project_hooks: 200)

# For group webhooks
Plan.default.actual_limits.update!(group_hooks: 100)

제한을 0으로 설정하면 비활성화됩니다.

기본 최대 웹훅 수는 프로젝트당 100개, 그룹당 50개입니다. 하위 그룹의 웹훅은 상위 그룹의 웹훅 제한에 포함되지 않습니다.

GitLab.com의 경우, GitLab.com의 웹훅 제한을 참조하세요.

웹훅 페이로드 크기#

최대 웹훅 페이로드 크기는 25 MB입니다.

웹훅 타임아웃#

웹훅을 전송한 후 GitLab이 HTTP 응답을 기다리는 초 수입니다.

웹훅 타임아웃 값을 변경하려면:

Sidekiq를 실행하는 모든 GitLab 노드에서 /etc/gitlab/gitlab.rb를 편집합니다:

gitlab_rails['webhook_timeout'] = 60

파일을 저장합니다.

변경 사항이 적용되도록 GitLab을 재구성하고 재시작합니다:

gitlab-ctl reconfigure
gitlab-ctl restart

GitLab.com의 웹훅 제한도 참조하세요.

재귀 웹훅#

GitLab은 재귀적이거나 다른 웹훅에서 트리거될 수 있는 웹훅 수의 제한을 초과하는 웹훅을 감지하고 차단합니다. 이를 통해 GitLab은 API를 비재귀적으로 호출하거나 불합리한 수의 다른 웹훅을 트리거하지 않는 웹훅을 사용하는 워크플로를 계속 지원할 수 있습니다.

재귀는 웹훅이 자신의 GitLab 인스턴스(예: API)를 호출하도록 구성될 때 발생할 수 있습니다. 그 호출이 같은 웹훅을 트리거하여 무한 루프를 만듭니다.

다른 웹훅을 트리거하는 일련의 웹훅에 의해 인스턴스에 요청되는 최대 횟수는 100입니다. 제한에 도달하면 GitLab은 해당 시리즈에서 트리거될 추가 웹훅을 차단합니다.

차단된 재귀 웹훅 호출은 "Recursive webhook blocked from executing" 메시지와 함께 auth.log에 기록됩니다.

가져오기 플레이스홀더 사용자 제한#

히스토리
  • GitLab 17.4에서 도입되었습니다.

가져오기 중에 생성되는 플레이스홀더 사용자 수는 최상위 네임스페이스당 제한될 수 있습니다.

GitLab Self-Managed의 기본 제한은 0 (무제한)입니다.

GitLab Self-Managed 인스턴스에서 이 제한을 변경하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(import_placeholder_user_limit_tier_1: 200)

제한을 0으로 설정하면 비활성화됩니다.

풀 미러링 간격#

풀 새로 고침 간의 최소 대기 시간은 기본값이 300초(5분)입니다. 예를 들어, 풀 새로 고침은 몇 번을 트리거하더라도 지정된 300초 기간에 한 번만 실행됩니다.

이 설정은 프로젝트 API를 사용하거나 설정 > 저장소 > 저장소 미러링에서 지금 업데이트 ( retry )를 선택하여 강제로 업데이트할 때 호출되는 풀 새로 고침 컨텍스트에서 적용됩니다. 이 설정은 풀 미러링을 위해 Sidekiq가 사용하는 자동 30분 간격 스케줄에는 영향을 미치지 않습니다.

GitLab Self-Managed 인스턴스에서 이 제한을 변경하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(pull_mirror_interval_seconds: 200)

자동 응답에서 수신 이메일#

GitLab은 X-Autoreply 헤더를 확인하여 자동 응답에서 보낸 모든 수신 이메일을 무시합니다. 이러한 이메일은 이슈나 머지 리퀘스트에 댓글을 생성하지 않습니다.

오류 추적을 통해 Sentry에서 전송된 데이터 양#

히스토리

GitLab으로 전송된 Sentry 페이로드는 보안상의 이유와 메모리 소비를 제한하기 위해 최대 1 MB 제한이 있습니다.

REST API의 오프셋 기반 페이지네이션에서 허용되는 최대 오프셋#

REST API에서 오프셋 기반 페이지네이션을 사용할 때, 결과 집합에 요청할 수 있는 최대 오프셋에 제한이 있습니다. 이 제한은 키셋 기반 페이지네이션도 지원하는 엔드포인트에만 적용됩니다. 페이지네이션 옵션에 대한 자세한 내용은 페이지네이션에 관한 API 문서 섹션에서 찾을 수 있습니다.

GitLab Self-Managed 인스턴스에 이 제한을 설정하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(offset_pagination_limit: 10000)
  • 기본 오프셋 페이지네이션 제한: 50000.

제한을 0으로 설정하면 비활성화됩니다.

GitLab Pages 제한#

GitLab Pages 웹사이트당 파일 수#

총 파일 항목 수 (디렉터리 및 심볼릭 링크 포함)는 GitLab Pages 웹사이트당 200,000으로 제한됩니다.

이것은 GitLab Self-Managed 및 GitLab.com의 기본 제한입니다.

GitLab Self-Managed 인스턴스에서 제한을 업데이트하려면 GitLab Rails 콘솔을 사용합니다. 예를 들어, 제한을 100으로 변경하려면:

Plan.default.actual_limits.update!(pages_file_entries: 100)

GitLab Pages 웹사이트당 커스텀 도메인 수#

GitLab Pages 웹사이트당 총 커스텀 도메인 수는 GitLab.com에서 150으로 제한됩니다.

GitLab Self-Managed의 기본 제한은 0 (무제한)입니다. 인스턴스에 제한을 설정하려면 Admin area를 사용합니다.

병렬 Pages 배포 수#

병렬 Pages 배포를 사용할 때, 최상위 네임스페이스에 허용되는 총 병렬 Pages 배포 수는 1000개입니다.

프로젝트에 고유 도메인이 활성화된 경우, 프로젝트의 고유 도메인은 별도의 1000개 배포 제한이 있는 자체 최상위 네임스페이스로 취급됩니다.

인스턴스 모니터링 및 메트릭#

인바운드 인시던트 관리 알림 제한#

이 설정은 일정 시간 동안 인바운드 알림 페이로드 수를 제한합니다.

인시던트 관리 속도 제한에 대해 자세히 알아보세요.

Prometheus Alert JSON 페이로드#

notify.json 엔드포인트로 전송된 Prometheus 알림 페이로드는 크기가 1 MB로 제한됩니다.

일반 Alert JSON 페이로드#

notify.json 엔드포인트로 전송된 알림 페이로드는 크기가 1 MB로 제한됩니다.

환경 대시보드 제한#

Tier: Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

표시되는 최대 프로젝트 수는 환경 대시보드를 참조하세요.

배포 보드의 환경 데이터#

배포 보드는 Kubernetes에서 Pod 및 배포에 대한 정보를 로드합니다. 그러나 Kubernetes에서 읽은 특정 환경에 대해 10 MB를 초과하는 데이터는 표시되지 않습니다.

머지 리퀘스트#

Diff 제한#

GitLab에는 다음에 대한 제한이 있습니다:

각각에 대해 상한 및 하한이 적용됩니다:

  • 변경된 파일 수.

  • 변경된 줄 수.

  • 표시되는 변경의 누적 크기.

하한은 추가적인 diff가 축소되도록 합니다. 상한은 더 이상 변경이 렌더링되지 않도록 합니다. 이 제한에 대한 자세한 내용은 diff 작업에 대한 GitLab 개발 문서를 읽어보세요.

Diff 버전 제한#

히스토리
  • GitLab 17.10에서 merge_requests_diffs_limit 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.

GitLab은 각 머지 리퀘스트를 1000개의 diff 버전으로 제한합니다. 이 제한에 도달한 머지 리퀘스트는 더 이상 업데이트할 수 없습니다. 대신 영향받은 머지 리퀘스트를 닫고 새 머지 리퀘스트를 만듭니다.

이 제한을 구성하려면 diff 제한 관리를 참조하세요.

머지 리퀘스트 리포트 크기 제한#

20 MB 제한을 초과하는 리포트는 로드되지 않습니다. 영향받은 리포트:

고급 검색 제한#

인덱싱된 최대 파일 크기#

Elasticsearch에서 인덱싱된 저장소 파일 내용에 제한을 설정할 수 있습니다. 이 제한보다 큰 파일은 파일 이름만 인덱싱합니다. 파일 내용은 인덱싱되지 않고 검색할 수 없습니다.

제한을 설정하면 인덱싱 프로세스의 메모리 사용량과 전체 인덱스 크기를 줄이는 데 도움이 됩니다. 이 값은 기본값이 1024 KiB (1 MiB)로, 이보다 큰 텍스트 파일은 사람이 읽을 용도가 아닌 경우가 많습니다.

무제한 파일 크기는 지원되지 않으므로 반드시 제한을 설정해야 합니다. 이 값을 GitLab Sidekiq 노드의 메모리 양보다 크게 설정하면 GitLab Sidekiq 노드의 메모리가 부족해집니다. 인덱싱 중에 이 양의 메모리가 미리 할당되기 때문입니다.

최대 필드 길이#

고급 검색을 위해 인덱싱된 텍스트 필드 내용에 제한을 설정할 수 있습니다. 최대값을 설정하면 인덱싱 프로세스의 부하를 줄이는 데 도움이 됩니다. 텍스트 필드가 이 제한을 초과하면 텍스트가 해당 문자 수로 잘립니다. 나머지 텍스트는 인덱싱되지 않고 검색할 수 없습니다. 이것은 인덱싱되는 저장소 파일을 제외한 모든 인덱싱된 데이터에 적용되며, 저장소 파일에는 별도의 제한이 있습니다. 자세한 내용은 인덱싱된 최대 파일 크기를 읽어보세요.

  • GitLab.com에서 필드 길이 제한은 20,000자입니다.

  • GitLab Self-Managed 인스턴스의 경우 필드 길이는 기본적으로 무제한입니다.

Elasticsearch를 활성화할 때 GitLab Self-Managed 인스턴스에 이 제한을 구성할 수 있습니다. 비활성화하려면 제한을 0으로 설정합니다.

수학 렌더링 제한#

히스토리
  • GitLab 16.5에서 도입되었습니다.
  • Wiki 및 저장소 파일에서 50 노드 제한이 제거되었습니다.

  • 그룹 수준 설정이 추가되어 수학 렌더링 제한을 비활성화할 수 있게 되었고, GitLab 16.9에서 wiki 및 저장소 파일에 대한 수학 제한이 기본적으로 다시 활성화되었습니다.

GitLab은 Markdown 필드에서 수학을 렌더링할 때 기본 제한을 적용합니다. 이 제한은 더 나은 보안과 성능을 제공합니다.

이슈, 머지 리퀘스트, 에픽, wiki 및 저장소 파일에 대한 제한:

  • 최대 매크로 확장 수: 1000.

  • em 단위의 최대 사용자 지정 크기: 20.

  • 렌더링된 최대 노드 수: 50.

  • 수학 블록의 최대 문자 수: 1000.

  • 최대 렌더링 시간: 2000 ms.

GitLab Self-Managed를 실행하고 사용자 입력을 신뢰하는 경우 이 제한을 비활성화할 수 있습니다. GitLab Rails 콘솔을 사용합니다:

ApplicationSetting.update(math_rendering_limits_enabled: false)

이 제한은 GraphQL 또는 REST API를 사용하여 그룹별로 비활성화할 수도 있습니다.

제한이 비활성화되면 이슈, 머지 리퀘스트, 에픽, wiki 및 저장소 파일에서 수학이 대부분 제한 없이 렌더링됩니다. 이는 악의적인 행위자가 브라우저에서 볼 때 DoS를 유발할 수 있는 수학을 추가할 수 있음을 의미합니다. 신뢰하는 사람만 콘텐츠를 추가할 수 있도록 해야 합니다.

Wiki 제한#

스니펫 제한#

스니펫 설정에 대한 문서를 참조하세요.

Design Management 제한#

이슈에 디자인 추가 섹션의 제한을 참조하세요.

Push 이벤트 제한#

최대 push 크기#

최대 허용 push 크기.

GitLab Self-Managed에서는 기본적으로 설정되지 않습니다. GitLab.com의 경우 계정 및 제한 설정을 참조하세요.

웹훅 및 프로젝트 서비스#

단일 push에서 변경 사항(브랜치 또는 태그) 총 수. 변경 사항이 지정된 제한보다 많으면 훅이 실행되지 않습니다.

자세한 내용은 다음을 참조하세요:

활동#

단일 push에서 개별 push 이벤트 또는 대량 push 이벤트가 생성되는지 결정하기 위한 변경 사항(브랜치 또는 태그) 총 수.

자세한 내용은 Push 이벤트 활동 제한 및 대량 push 이벤트 문서에서 찾을 수 있습니다.

패키지 레지스트리 제한#

파일 크기 제한#

GitLab 패키지 레지스트리에 업로드된 패키지의 기본 최대 파일 크기는 형식에 따라 다릅니다:

  • Conan: 3 GB

  • Generic: 5 GB

  • Helm: 5 MB

  • Maven: 3 GB

  • npm: 500 MB

  • NuGet: 500 MB

  • PyPI: 3 GB

  • Terraform: 1 GB

GitLab.com의 최대 파일 크기는 다를 수 있습니다.

GitLab Self-Managed 인스턴스에 이 제한을 설정하려면 Admin area를 통해 하거나 GitLab Rails 콘솔에서 다음을 실행합니다:

# File size limit is stored in bytes

# For Conan Packages
Plan.default.actual_limits.update!(conan_max_file_size: 100.megabytes)

# For npm Packages
Plan.default.actual_limits.update!(npm_max_file_size: 100.megabytes)

# For NuGet Packages
Plan.default.actual_limits.update!(nuget_max_file_size: 100.megabytes)

# For Maven Packages
Plan.default.actual_limits.update!(maven_max_file_size: 100.megabytes)

# For PyPI Packages
Plan.default.actual_limits.update!(pypi_max_file_size: 100.megabytes)

# For Debian Packages
Plan.default.actual_limits.update!(debian_max_file_size: 100.megabytes)

# For Helm Charts
Plan.default.actual_limits.update!(helm_max_file_size: 100.megabytes)

# For Generic Packages
Plan.default.actual_limits.update!(generic_packages_max_file_size: 100.megabytes)

모든 파일 크기를 허용하려면 제한을 0으로 설정합니다.

반환되는 패키지 버전#

지정된 NuGet 패키지 이름의 버전을 요청할 때, GitLab 패키지 레지스트리는 최대 300개의 버전을 반환합니다.

Dependency Proxy 제한#

Dependency Proxy에 캐시된 이미지의 최대 파일 크기는 파일 유형에 따라 다릅니다:

  • 이미지 blob: 5 GB

  • 이미지 manifest: 10 MB

최대 담당자 및 검토자 수#

히스토리
  • 최대 담당자가 GitLab 15.6에서 도입되었습니다.
  • 최대 검토자가 GitLab 15.9에서 도입되었습니다.

이슈 및 머지 리퀘스트는 다음 최대값을 적용합니다:

  • 최대 담당자: 200

  • 최대 검토자: 200

최대 프로젝트 push 미러 수#

히스토리
  • GitLab 18.9에서 도입되었습니다.

각 프로젝트는 최대 10개의 활성화된 push 미러를 가질 수 있습니다. 이 제한은 과도한 동시 동기화 작업으로 인한 성능 문제를 방지합니다.

더 많은 미러가 필요한 경우:

  • 사용하지 않는 미러를 비활성화합니다.

  • 여러 대상을 단일 미러로 결합하여 미러를 통합합니다.

GitLab.com의 CDN 기반 제한#

애플리케이션 기반 제한 외에도, GitLab.com은 Git over SSH를 보호하기 위해 Cloudflare의 표준 DDoS 보호 및 Spectrum을 사용하도록 구성되어 있습니다. Cloudflare는 클라이언트 TLS 연결을 종료하지만 애플리케이션을 인식하지 못하며 사용자 또는 그룹에 연결된 제한에는 사용할 수 없습니다. Cloudflare 페이지 규칙 및 속도 제한은 Terraform으로 구성됩니다. 이러한 구성에는 악의적인 활동을 감지하고 공개되면 이러한 작업을 약화시킬 수 있는 보안 및 남용 구현이 포함되어 있으므로 공개되지 않습니다.

컨테이너 저장소 태그 삭제 제한#

컨테이너 저장소 태그는 컨테이너 레지스트리에 있으므로 각 태그 삭제는 컨테이너 레지스트리에 대한 네트워크 요청을 트리거합니다. 이 때문에 단일 API 호출이 삭제할 수 있는 태그 수를 20으로 제한합니다.

프로젝트 수준 Secure Files API 제한#

secure files API는 다음 제한을 적용합니다:

  • 파일은 5 MB보다 작아야 합니다.

  • 프로젝트는 100개 이상의 secure file을 가질 수 없습니다.

Changelog API 제한#

히스토리
  • GitLab 15.1에서 changelog_commits_limitation 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.

changelog API는 다음 제한을 적용합니다:

  • fromto 사이의 커밋 범위는 15000개 커밋을 초과할 수 없습니다.

Value Stream Analytics 제한#

  • 각 네임스페이스(그룹 또는 프로젝트 등)는 최대 50개의 value stream을 가질 수 있습니다.

  • 각 value stream은 최대 15개의 단계를 가질 수 있습니다.

감사 이벤트 스트리밍 대상 제한#

커스텀 HTTP 엔드포인트#

  • 각 최상위 그룹은 최대 5개의 커스텀 HTTP 스트리밍 대상을 가질 수 있습니다.

Google Cloud Logging#

  • 각 최상위 그룹은 최대 5개의 Google Cloud Logging 스트리밍 대상을 가질 수 있습니다.

Amazon S3#

  • 각 최상위 그룹은 최대 5개의 Amazon S3 스트리밍 대상을 가질 수 있습니다.

SBOM을 사용한 종속성 스캐닝 제한#

SBOM 기능을 사용한 종속성 스캐닝은 다음 제한이 있는 내부 API를 사용합니다:

  • 시간당 프로젝트당 최대 업로드 요청 수: 400

  • 시간당 프로젝트당 최대 다운로드 요청 수: 6000

종속성 스캐닝 설정을 사용하여 GitLab Self-Managed 인스턴스에 이 제한을 구성할 수 있습니다.

커밋 및 Files API 제한#

히스토리
  • GitLab 18.7에서 도입되었습니다.

커밋 및 Files API는 다음 엔드포인트에 최대 크기 및 속도 제한을 적용합니다:

  • POST /projects/:id/repository/commits - 커밋 생성

  • POST /projects/:id/repository/files/:file_path - 저장소에 파일 생성

  • PUT /projects/:id/repository/files/:file_path - 저장소의 파일 업데이트

  • 최대 요청 크기: 이 제한을 초과하는 요청은 다음 메시지와 함께 413 Request Entity Too Large 오류를 받습니다: RequestBody: upload failed: the upload size <size> is over maximum of 314572800 bytes: entity is too large. 기본값은 300 MB (314,572,800바이트)입니다.

  • 속도 제한: 20 MB를 초과하는 요청에 대해 30초당 3개 요청.

최대 요청 크기는 GITLAB_COMMITS_MAX_REQUEST_SIZE_BYTES 환경 변수를 설정하여 GitLab Self-Managed에서 구성할 수 있습니다. 이 변수는 최대 요청 크기를 바이트 단위로 설정합니다. 환경 변수를 설정하는 방법에 대한 지침은 HTTP 요청 제한에서 찾을 수 있습니다.

모든 인스턴스 제한 나열#

모든 인스턴스 제한값을 나열하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

Plan.default.actual_limits

샘플 출력:

id: 1,
plan_id: 1,
ci_pipeline_size: 0,
ci_active_jobs: 0,
project_hooks: 100,
group_hooks: 50,
ci_project_subscriptions: 3,
ci_pipeline_schedules: 10,
offset_pagination_limit: 50000,
ci_instance_level_variables: "[FILTERED]",
storage_size_limit: 0,
ci_max_artifact_size_lsif: 200,
ci_max_artifact_size_archive: 0,
ci_max_artifact_size_metadata: 0,
ci_max_artifact_size_trace: "[FILTERED]",
ci_max_artifact_size_junit: 0,
ci_max_artifact_size_sast: 0,
ci_max_artifact_size_dependency_scanning: 350,
ci_max_artifact_size_container_scanning: 150,
ci_max_artifact_size_dast: 0,
ci_max_artifact_size_codequality: 0,
ci_max_artifact_size_license_management: 0,
ci_max_artifact_size_license_scanning: 100,
ci_max_artifact_size_performance: 0,
ci_max_artifact_size_metrics: 0,
ci_max_artifact_size_metrics_referee: 0,
ci_max_artifact_size_network_referee: 0,
ci_max_artifact_size_dotenv: 0,
ci_max_artifact_size_cobertura: 0,
ci_max_artifact_size_terraform: 5,
ci_max_artifact_size_accessibility: 0,
ci_max_artifact_size_cluster_applications: 0,
ci_max_artifact_size_secret_detection: "[FILTERED]",
ci_max_artifact_size_requirements: 0,
ci_max_artifact_size_coverage_fuzzing: 0,
ci_max_artifact_size_browser_performance: 0,
ci_max_artifact_size_load_performance: 0,
ci_needs_size_limit: 2,
conan_max_file_size: 3221225472,
maven_max_file_size: 3221225472,
npm_max_file_size: 524288000,
nuget_max_file_size: 524288000,
pypi_max_file_size: 3221225472,
generic_packages_max_file_size: 5368709120,
golang_max_file_size: 104857600,
debian_max_file_size: 3221225472,
project_feature_flags: 200,
ci_max_artifact_size_api_fuzzing: 0,
ci_pipeline_deployments: 500,
pull_mirror_interval_seconds: 300,
daily_invites: 0,
rubygems_max_file_size: 3221225472,
terraform_module_max_file_size: 1073741824,
helm_max_file_size: 5242880,
ci_registered_group_runners: 1000,
ci_registered_project_runners: 1000,
ci_daily_pipeline_schedule_triggers: 0,
ci_max_artifact_size_cluster_image_scanning: 0,
ci_jobs_trace_size_limit: "[FILTERED]",
pages_file_entries: 200000,
dast_profile_schedules: 1,
external_audit_event_destinations: 5,
dotenv_variables: "[FILTERED]",
dotenv_size: 5120,
pipeline_triggers: 25000,
project_ci_secure_files: 100,
repository_size: 0,
security_policy_scan_execution_schedules: 0,
web_hook_calls_mid: 0,
web_hook_calls_low: 0,
project_ci_variables: "[FILTERED]",
group_ci_variables: "[FILTERED]",
ci_max_artifact_size_cyclonedx: 1,
rpm_max_file_size: 5368709120,
pipeline_hierarchy_size: 1000,
ci_max_artifact_size_requirements_v2: 0,
enforcement_limit: 0,
notification_limit: 0,
dashboard_limit_enabled_at: nil,
web_hook_calls: 0,
project_access_token_limit: 0,
google_cloud_logging_configurations: 5,
ml_model_max_file_size: 10737418240,
limits_history: {},
audit_events_amazon_s3_configurations: 5

일부 제한 값은 Rails 콘솔에서의 필터링으로 인해 목록에 [FILTERED]로 표시됩니다.

GitLab 애플리케이션 제한

GitLab v19.2
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

GitLab은 대부분의 대규모 애플리케이션과 마찬가지로, 최소한의 성능 품질을 유지하기 위해 특정 기능에 제한을 적용합니다. 인스턴스 구성 페이지에서 현재 GitLab 인스턴스에 사용되는 일부 설정 정보를 확인할 수 있습니다.

GitLab은 대부분의 대규모 애플리케이션과 마찬가지로, 최소한의 성능 품질을 유지하기 위해 특정 기능에 제한을 적용합니다. 일부 기능을 무제한으로 허용하면 보안, 성능, 데이터에 영향을 미치거나 애플리케이션에 할당된 리소스가 소진될 수 있습니다.

인스턴스 구성#

인스턴스 구성 페이지에서 현재 GitLab 인스턴스에 사용되는 일부 설정 정보를 확인할 수 있습니다.

구성한 제한에 따라 다음 정보를 볼 수 있습니다.

  • SSH 호스트 키 정보

  • CI/CD 제한

  • GitLab Pages 제한

  • 패키지 레지스트리 제한

  • 속도 제한

  • 크기 제한

이 페이지는 모든 사람이 볼 수 있으므로, 인증되지 않은 사용자는 자신에게 관련된 정보만 볼 수 있습니다.

인스턴스 구성 페이지를 방문하려면:

  • 왼쪽 사이드바에서 도움말 ( question-o ) > 도움말을 선택합니다.

  • 도움말 페이지에서 현재 인스턴스 구성 확인을 선택합니다.

직접 URL은 <gitlab_url>/help/instance_configuration입니다. GitLab.com에서는 https://gitlab.com/help/instance_configuration을 방문할 수 있습니다.

속도 제한#

속도 제한은 GitLab의 보안과 내구성을 향상시키는 데 사용될 수 있습니다.

속도 제한 구성에 대해 자세히 알아보세요.

이슈 생성#

이 설정은 이슈 생성 엔드포인트에 대한 요청 속도를 제한합니다.

이슈 생성 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

사용자 또는 IP별#

이 설정은 사용자 또는 IP별 요청 속도를 제한합니다.

사용자 및 IP 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

raw 엔드포인트별#

이 설정들은 raw 엔드포인트의 요청 속도를 제한합니다.

raw 엔드포인트 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한 (인증됨 및 인증되지 않음): 프로젝트 및 파일 경로당 분당 300개 요청.

  • 기본 속도 제한 (인증되지 않음): 모든 파일 경로에 걸쳐 프로젝트당 분당 800개 요청.

보호된 경로별#

이 설정은 특정 경로의 요청 속도를 제한합니다.

GitLab은 기본적으로 POST 요청에 대해 다음 경로를 속도 제한합니다:

'/users/password',
'/users/sign_in',
'/api/#{API::API.version}/session.json',
'/api/#{API::API.version}/session',
'/users',
'/users/confirmation',
'/unsubscribes/',
'/import/github/personal_access_token',
'/admin/session'

GitLab은 기본적으로 GET 요청에 대해 다음 경로를 속도 제한합니다:

'/users/sign_in_path'

보호된 경로 속도 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 10번의 요청 이후, 클라이언트는 다시 시도하기 전에 60초를 기다려야 합니다.

패키지 레지스트리#

이 설정은 사용자 또는 IP별 Packages API 요청 속도를 제한합니다. 자세한 내용은 패키지 레지스트리 속도 제한을 참조하세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

Git LFS#

이 설정은 사용자별 Git LFS 요청 속도를 제한합니다. 자세한 내용은 GitLab Git Large File Storage (LFS) 관리를 읽어보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

Files API#

이 설정은 사용자 또는 IP 주소별 Files API 요청 속도를 제한합니다. 자세한 내용은 Files API 속도 제한을 읽어보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

더 이상 사용되지 않는 API 엔드포인트#

이 설정은 사용자 또는 IP 주소별 더 이상 사용되지 않는 API 엔드포인트의 요청 속도를 제한합니다. 자세한 내용은 더 이상 사용되지 않는 API 속도 제한을 읽어보세요.

  • 기본 속도 제한: 기본적으로 비활성화됩니다.

가져오기 및 내보내기#

이 설정들은 그룹 및 프로젝트의 파일 가져오기 및 내보내기를 제한합니다.

제한 기본값 (사용자당 분당)
프로젝트 가져오기 6번 가져오기 요청
프로젝트 내보내기 6번 내보내기 요청
프로젝트 내보내기 다운로드 1번 다운로드 요청
그룹 가져오기 6번 가져오기 요청
그룹 내보내기 6번 내보내기 요청
그룹 내보내기 다운로드 1번 다운로드 요청

이 설정들은 구성할 수 있습니다.

직접 전송 마이그레이션#

히스토리
  • 허용되는 최대 마이그레이션 수 제한이 GitLab 15.9에서 도입되었습니다.
  • 구성 가능한 설정이 GitLab 16.3에서 도입되었습니다.

  • 마이그레이션에 대한 8시간 제한이 GitLab 16.7에서 제거되었습니다.

직접 전송으로 마이그레이션할 때 다음 제한이 적용됩니다.

제한 기본값 구성 가능
사용자당 분당 대상 GitLab 인스턴스별 마이그레이션 수. 6 아니요
아카이브 파일 압축 해제 대기 시간. 210초 아니요
NDJSON 행 길이. 50 MB 아니요
소스 인스턴스에서 빈 내보내기 상태가 발생할 때까지의 시간. 5분 아니요
소스 인스턴스에서 다운로드할 수 있는 관계 크기. 5 GiB
압축 해제된 아카이브 크기. 10 GiB

구성 가능한 제한 변경에 대한 자세한 내용은 가져오기 및 내보내기 설정을 참조하세요.

멤버 초대#

그룹 계층당 허용되는 최대 일일 멤버 초대 수를 제한합니다.

  • GitLab.com: Free 멤버는 하루에 20명을 초대할 수 있고, Premium 트라이얼 및 Ultimate 트라이얼 멤버는 하루에 50명을 초대할 수 있습니다.

  • GitLab Self-Managed: 초대는 제한되지 않습니다.

웹훅 속도 제한#

최상위 네임스페이스의 웹훅이 분당 호출될 수 있는 횟수를 제한합니다. 네임스페이스의 모든 프로젝트 및 그룹 웹훅이 이 제한을 공유합니다.

속도 제한을 초과하는 호출은 auth.log에 기록됩니다.

GitLab Self-Managed 인스턴스에 이 제한을 설정하려면 Plan Limits API를 사용하거나 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(web_hook_calls: 10)

제한을 0으로 설정하면 비활성화됩니다.

  • 기본 속도 제한: 비활성화됨 (무제한).

검색 속도 제한#

히스토리
  • GitLab 15.9에서 이슈, 머지 리퀘스트, 에픽 검색을 속도 제한에 포함하도록 변경되었습니다.
  • GitLab 16.0에서 인증된 요청에 대한 검색 범위에 속도 제한을 적용하도록 변경되었습니다.

이 설정은 다음과 같이 검색 요청을 제한합니다:

제한 기본값 (분당 요청 수)
인증된 사용자 30
인증되지 않은 사용자 10

분당 검색 속도 제한을 초과하는 검색 요청은 다음 오류를 반환합니다:

This endpoint has been requested too many times. Try again later.

자동 완성 사용자 속도 제한#

히스토리
  • GitLab 17.10에서 autocomplete_users_rate_limit 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • GitLab 18.1에서 일반 가용됩니다. 기능 플래그 autocomplete_users_rate_limit가 제거되었습니다.

이 설정은 자동 완성 사용자 요청을 다음과 같이 제한합니다:

제한 기본값 (분당 요청 수)
인증된 사용자 300
인증되지 않은 사용자 100

분당 자동 완성 속도 제한을 초과하는 자동 완성 요청은 다음 오류를 반환합니다:

This endpoint has been requested too many times. Try again later.

파이프라인 생성 속도 제한#

히스토리
  • GitLab 15.0에서 도입되었습니다.

이 설정은 파이프라인 생성 엔드포인트에 대한 요청 속도를 제한합니다.

파이프라인 생성 속도 제한에 대해 자세히 알아보세요.

Gitaly 동시성 제한#

클론 트래픽은 Gitaly 서비스에 큰 부하를 줄 수 있습니다. 이러한 워크로드가 Gitaly 서버를 압도하는 것을 방지하기 위해 Gitaly 구성 파일에서 동시성 제한을 설정할 수 있습니다.

Gitaly 동시성 제한에 대해 자세히 알아보세요.

  • 기본 속도 제한: 비활성화됩니다.

이슈, 머지 리퀘스트, 또는 커밋당 댓글 수#

이슈, 머지 리퀘스트, 또는 커밋에 제출할 수 있는 댓글 수에는 제한이 있습니다. 제한에 도달하면 이벤트 기록이 손실되지 않도록 시스템 노트는 여전히 추가될 수 있지만, 사용자가 제출한 댓글은 실패합니다.

  • 최대 제한: 댓글 5,000개.

이슈, 머지 리퀘스트, 에픽의 댓글 및 설명 크기#

이슈, 머지 리퀘스트, 에픽의 댓글 및 설명 크기에는 제한이 있습니다. 제한보다 큰 텍스트 본문을 추가하려고 하면 오류가 발생하고, 항목도 생성되지 않습니다.

이 제한이 미래에 더 낮은 숫자로 변경될 수 있습니다.

  • 최대 크기: 약 100만 자 / 약 1 MB.

커밋 제목 및 설명 크기#

임의로 큰 메시지가 있는 커밋이 GitLab에 push될 수 있지만, 다음 표시 제한이 적용됩니다:

  • 제목 - 커밋 메시지의 첫 번째 줄. 1 KiB로 제한됩니다.

  • 설명 - 나머지 커밋 메시지. 1 MiB로 제한됩니다.

커밋이 push되면 GitLab은 제목과 설명을 처리하여 이슈(#123) 및 머지 리퀘스트(!123) 참조를 해당 이슈와 머지 리퀘스트의 링크로 교체합니다.

많은 수의 커밋이 있는 브랜치가 push되면, 마지막 100개 커밋만 처리됩니다.

리베이스 작업 중 크기#

커밋을 리베이스할 때, 크기 제한을 초과하는 커밋 메시지는 잘립니다. 이 제한은 커밋 제목 및 설명의 크기 제한과는 별개입니다.

  • 제한: 10,240바이트 (10 KB).

마일스톤 개요의 이슈 수#

마일스톤 개요 페이지에 로드되는 최대 이슈 수는 500개입니다. 수가 제한을 초과하면 페이지에 알림이 표시되고 마일스톤의 모든 이슈의 페이지화된 이슈 목록으로 링크됩니다.

  • 제한: 이슈 500개.

활동 기록 보존#

프로젝트 및 개인 프로필의 활동 기록은 3년으로 제한됩니다.

임베드된 메트릭 수#

성능상의 이유로 GitLab Flavored Markdown (GLFM)에 메트릭을 임베드할 때 제한이 있습니다.

  • 최대 제한: 100개 임베드.

HTTP 응답 제한#

최대 Gzip 압축 크기#

히스토리
  • GitLab 17.10에서 도입되었습니다.

이 설정은 압축 해제 후 Gzip 압축된 HTTP 응답에 허용되는 최대 크기(MiB)를 제한합니다.

기본 최대 크기는 100 MiB입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다.

ApplicationSetting.update(max_http_decompressed_size: 50)

아웃바운드 요청에서 최대 HTTP 응답 크기#

히스토리
  • GitLab 17.10에서 도입되었습니다.

이 설정은 압축 해제된 HTTP 응답에 허용되는 최대 크기(MiB)를 제한합니다. 통합, 임포터, 웹훅에 적용됩니다.

기본 최대 크기는 100 MiB입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다.

ApplicationSetting.update(max_http_response_size_limit: 60)

아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 오브젝트 수#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 오브젝트 수를 제한합니다. 오브젝트 수는 응답에서 :, ,, {, [의 발생 횟수를 기반으로 추정됩니다.

기본 최대 수는 1,000,000개 오브젝트입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_json_structural_chars: 500000)

아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 중첩 깊이#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 중첩 깊이를 제한합니다.

기본 최대 중첩 깊이는 32입니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_json_depth: 100)

아웃바운드 요청에서 XML HTTP 응답의 최대 허용 오브젝트 수#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 XML HTTP 응답의 최대 허용 오브젝트 수를 제한합니다. 오브젝트 수는 응답에서 <, =의 발생 횟수를 기반으로 추정됩니다.

기본 최대 수는 250,000개 오브젝트입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_xml_structural_chars: 500000)

아웃바운드 요청에서 CSV HTTP 응답의 최대 허용 오브젝트 수#

히스토리
  • GitLab 18.4에서 도입되었습니다.

이 설정은 아웃바운드 요청에서 CSV HTTP 응답의 최대 허용 오브젝트 수를 제한합니다. 오브젝트 수는 응답에서 ,, ;, \t, \r, \n의 발생 횟수를 기반으로 추정됩니다.

기본 최대 수는 250,000개 오브젝트입니다. 이 제한을 비활성화하려면 값을 0으로 설정합니다.

GitLab Rails 콘솔을 사용하거나 애플리케이션 설정 API를 사용하여 이 제한을 변경할 수 있습니다:

ApplicationSetting.update(max_http_response_csv_structural_chars: 500000)

HTTP 요청 제한#

기본적으로 요청의 JSON 파라미터는 제한됩니다. 자세한 내용은 엔드포인트별 JSON 유효성 검사 제한을 참조하세요.

Linux package (Omnibus)

이 검사를 비활성화하려면:

- Puma를 실행하는 모든 노드에서 GITLAB_JSON_GLOBAL_VALIDATION_MODE 환경 변수를 설정합니다:

sudo -e /etc/gitlab/gitlab.rb
gitlab_rails['env'] = { 'GITLAB_JSON_GLOBAL_VALIDATION_MODE' => 'disabled' }

변경 사항이 적용되도록 업데이트된 노드를 재구성합니다:

sudo gitlab-ctl reconfigure

Helm chart (Kubernetes)

이 검사를 비활성화하려면 `--set gitlab.webservice.extraEnv.GITLAB_JSON_GLOBAL_VALIDATION_MODE="disabled"`를 사용하거나,

values 파일에 다음을 지정합니다:

gitlab:
  webservice:
    extraEnv:
      GITLAB_JSON_GLOBAL_VALIDATION_MODE: "disabled"

엔드포인트별 JSON 유효성 검사 제한#

일부 API 엔드포인트에는 특정 JSON 유효성 검사 제한이 있습니다.

엔드포인트 설명 메서드 최대 깊이 최대 배열 크기 최대 해시 크기 최대 전체 요소 최대 JSON 크기 모드
기타 모든 경로 기본 전체 32 50,000 50,000 100,000 0 (비활성화) enforced
/api/v4/projects/{id}/terraform/state/ Terraform 상태 POST 64 50,000 50,000 250,000 50 MB logging 1
/api/v4/packages/npm/-/npm/v1/security/{advisories/bulk audits/quick} NPM 인스턴스 패키지 POST 32 50,000 50,000 250,000 50 MB
/api/v4/groups/{id}/-/packages/npm/-/npm/v1/security/{advisories/bulk audits/quick} NPM 그룹 패키지 POST 32 50,000 50,000 250,000 50 MB
/api/v4/projects/{id}/packages/npm/-/npm/v1/security/{advisories/bulk audits/quick} NPM 프로젝트 패키지 POST 32 50,000 50,000 250,000 50 MB
/api/v4/internal/* 내부 API POST 32 50,000 50,000 0 (비활성화) 10 MB enforced
/api/v4/ai/duo_workflows/workflows/* GitLab Duo Workflow API POST 32 5,000 5,000 0 (비활성화) 25 MB enforced

각주:

  • Terraform 상태 최대 크기 제한은 애플리케이션 설정 API를 사용하여 max_terraform_state_size_bytes를 설정함으로써 지정할 수 있습니다.

환경 변수 구성#

다음 환경 변수들은 기본 제한과 유효성 검사 모드를 수정합니다:

환경 변수 목적 기본값 범위
GITLAB_JSON_MAX_DEPTH 기본 최대 중첩 깊이 32 기본 제한만
GITLAB_JSON_MAX_ARRAY_SIZE 기본 최대 배열 요소 50,000 기본 제한만
GITLAB_JSON_MAX_HASH_SIZE 기본 최대 해시 키 50,000 기본 제한만
GITLAB_JSON_MAX_TOTAL_ELEMENTS 기본 최대 전체 요소 100,000 기본 제한만
GITLAB_JSON_MAX_JSON_SIZE_BYTES 기본 최대 본문 크기 0 (비활성화) 기본 제한만
GITLAB_JSON_VALIDATION_MODE 기본 유효성 검사 모드 enforced 기본 제한만
GITLAB_JSON_GLOBAL_VALIDATION_MODE 모든 엔드포인트 모드 재정의 설정 안 됨 모든 엔드포인트 (전역 재정의)

GITLAB_JSON_GLOBAL_VALIDATION_MODE 환경 변수는 다음 모드 중 하나로 설정할 수 있습니다.

모드 설명
enforced 제한을 초과하는 요청을 유효성 검사하고 차단합니다 (HTTP 400 반환). 프로덕션 보호에 사용됩니다.
logging 위반 사항을 유효성 검사하고 기록하지만 요청은 통과시킵니다. 모니터링 및 디버깅에 사용됩니다. 모든 엔드포인트가 로그만 기록하여 enforced를 재정의합니다.
disabled 유효성 검사를 완전히 건너뜁니다. 비상 우회로 사용됩니다.

GITLAB_JSON_GLOBAL_VALIDATION_MODE 사용 시:

  • 경로별 구성이 기본 제한을 재정의하지만 전역 유효성 검사 모드는 재정의하지 않습니다.

  • enforced 모드에서 제한을 초과하면 응답은 JSON 오류 메시지가 포함된 HTTP 400입니다.

  • 전체 요소 수에는 전체 JSON 구조의 배열과 해시의 모든 요소가 포함됩니다.

웹훅 제한#

웹훅 속도 제한도 참조하세요.

웹훅 수#

GitLab Self-Managed 인스턴스의 그룹 또는 프로젝트 웹훅 최대 수를 설정하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

# For project webhooks
Plan.default.actual_limits.update!(project_hooks: 200)

# For group webhooks
Plan.default.actual_limits.update!(group_hooks: 100)

제한을 0으로 설정하면 비활성화됩니다.

기본 최대 웹훅 수는 프로젝트당 100개, 그룹당 50개입니다. 하위 그룹의 웹훅은 상위 그룹의 웹훅 제한에 포함되지 않습니다.

GitLab.com의 경우, GitLab.com의 웹훅 제한을 참조하세요.

웹훅 페이로드 크기#

최대 웹훅 페이로드 크기는 25 MB입니다.

웹훅 타임아웃#

웹훅을 전송한 후 GitLab이 HTTP 응답을 기다리는 초 수입니다.

웹훅 타임아웃 값을 변경하려면:

Sidekiq를 실행하는 모든 GitLab 노드에서 /etc/gitlab/gitlab.rb를 편집합니다:

gitlab_rails['webhook_timeout'] = 60

파일을 저장합니다.

변경 사항이 적용되도록 GitLab을 재구성하고 재시작합니다:

gitlab-ctl reconfigure
gitlab-ctl restart

GitLab.com의 웹훅 제한도 참조하세요.

재귀 웹훅#

GitLab은 재귀적이거나 다른 웹훅에서 트리거될 수 있는 웹훅 수의 제한을 초과하는 웹훅을 감지하고 차단합니다. 이를 통해 GitLab은 API를 비재귀적으로 호출하거나 불합리한 수의 다른 웹훅을 트리거하지 않는 웹훅을 사용하는 워크플로를 계속 지원할 수 있습니다.

재귀는 웹훅이 자신의 GitLab 인스턴스(예: API)를 호출하도록 구성될 때 발생할 수 있습니다. 그 호출이 같은 웹훅을 트리거하여 무한 루프를 만듭니다.

다른 웹훅을 트리거하는 일련의 웹훅에 의해 인스턴스에 요청되는 최대 횟수는 100입니다. 제한에 도달하면 GitLab은 해당 시리즈에서 트리거될 추가 웹훅을 차단합니다.

차단된 재귀 웹훅 호출은 "Recursive webhook blocked from executing" 메시지와 함께 auth.log에 기록됩니다.

가져오기 플레이스홀더 사용자 제한#

히스토리
  • GitLab 17.4에서 도입되었습니다.

가져오기 중에 생성되는 플레이스홀더 사용자 수는 최상위 네임스페이스당 제한될 수 있습니다.

GitLab Self-Managed의 기본 제한은 0 (무제한)입니다.

GitLab Self-Managed 인스턴스에서 이 제한을 변경하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(import_placeholder_user_limit_tier_1: 200)

제한을 0으로 설정하면 비활성화됩니다.

풀 미러링 간격#

풀 새로 고침 간의 최소 대기 시간은 기본값이 300초(5분)입니다. 예를 들어, 풀 새로 고침은 몇 번을 트리거하더라도 지정된 300초 기간에 한 번만 실행됩니다.

이 설정은 프로젝트 API를 사용하거나 설정 > 저장소 > 저장소 미러링에서 지금 업데이트 ( retry )를 선택하여 강제로 업데이트할 때 호출되는 풀 새로 고침 컨텍스트에서 적용됩니다. 이 설정은 풀 미러링을 위해 Sidekiq가 사용하는 자동 30분 간격 스케줄에는 영향을 미치지 않습니다.

GitLab Self-Managed 인스턴스에서 이 제한을 변경하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(pull_mirror_interval_seconds: 200)

자동 응답에서 수신 이메일#

GitLab은 X-Autoreply 헤더를 확인하여 자동 응답에서 보낸 모든 수신 이메일을 무시합니다. 이러한 이메일은 이슈나 머지 리퀘스트에 댓글을 생성하지 않습니다.

오류 추적을 통해 Sentry에서 전송된 데이터 양#

히스토리

GitLab으로 전송된 Sentry 페이로드는 보안상의 이유와 메모리 소비를 제한하기 위해 최대 1 MB 제한이 있습니다.

REST API의 오프셋 기반 페이지네이션에서 허용되는 최대 오프셋#

REST API에서 오프셋 기반 페이지네이션을 사용할 때, 결과 집합에 요청할 수 있는 최대 오프셋에 제한이 있습니다. 이 제한은 키셋 기반 페이지네이션도 지원하는 엔드포인트에만 적용됩니다. 페이지네이션 옵션에 대한 자세한 내용은 페이지네이션에 관한 API 문서 섹션에서 찾을 수 있습니다.

GitLab Self-Managed 인스턴스에 이 제한을 설정하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(offset_pagination_limit: 10000)
  • 기본 오프셋 페이지네이션 제한: 50000.

제한을 0으로 설정하면 비활성화됩니다.

GitLab Pages 제한#

GitLab Pages 웹사이트당 파일 수#

총 파일 항목 수 (디렉터리 및 심볼릭 링크 포함)는 GitLab Pages 웹사이트당 200,000으로 제한됩니다.

이것은 GitLab Self-Managed 및 GitLab.com의 기본 제한입니다.

GitLab Self-Managed 인스턴스에서 제한을 업데이트하려면 GitLab Rails 콘솔을 사용합니다. 예를 들어, 제한을 100으로 변경하려면:

Plan.default.actual_limits.update!(pages_file_entries: 100)

GitLab Pages 웹사이트당 커스텀 도메인 수#

GitLab Pages 웹사이트당 총 커스텀 도메인 수는 GitLab.com에서 150으로 제한됩니다.

GitLab Self-Managed의 기본 제한은 0 (무제한)입니다. 인스턴스에 제한을 설정하려면 Admin area를 사용합니다.

병렬 Pages 배포 수#

병렬 Pages 배포를 사용할 때, 최상위 네임스페이스에 허용되는 총 병렬 Pages 배포 수는 1000개입니다.

프로젝트에 고유 도메인이 활성화된 경우, 프로젝트의 고유 도메인은 별도의 1000개 배포 제한이 있는 자체 최상위 네임스페이스로 취급됩니다.

인스턴스 모니터링 및 메트릭#

인바운드 인시던트 관리 알림 제한#

이 설정은 일정 시간 동안 인바운드 알림 페이로드 수를 제한합니다.

인시던트 관리 속도 제한에 대해 자세히 알아보세요.

Prometheus Alert JSON 페이로드#

notify.json 엔드포인트로 전송된 Prometheus 알림 페이로드는 크기가 1 MB로 제한됩니다.

일반 Alert JSON 페이로드#

notify.json 엔드포인트로 전송된 알림 페이로드는 크기가 1 MB로 제한됩니다.

환경 대시보드 제한#

Tier: Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

표시되는 최대 프로젝트 수는 환경 대시보드를 참조하세요.

배포 보드의 환경 데이터#

배포 보드는 Kubernetes에서 Pod 및 배포에 대한 정보를 로드합니다. 그러나 Kubernetes에서 읽은 특정 환경에 대해 10 MB를 초과하는 데이터는 표시되지 않습니다.

머지 리퀘스트#

Diff 제한#

GitLab에는 다음에 대한 제한이 있습니다:

각각에 대해 상한 및 하한이 적용됩니다:

  • 변경된 파일 수.

  • 변경된 줄 수.

  • 표시되는 변경의 누적 크기.

하한은 추가적인 diff가 축소되도록 합니다. 상한은 더 이상 변경이 렌더링되지 않도록 합니다. 이 제한에 대한 자세한 내용은 diff 작업에 대한 GitLab 개발 문서를 읽어보세요.

Diff 버전 제한#

히스토리
  • GitLab 17.10에서 merge_requests_diffs_limit 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.

GitLab은 각 머지 리퀘스트를 1000개의 diff 버전으로 제한합니다. 이 제한에 도달한 머지 리퀘스트는 더 이상 업데이트할 수 없습니다. 대신 영향받은 머지 리퀘스트를 닫고 새 머지 리퀘스트를 만듭니다.

이 제한을 구성하려면 diff 제한 관리를 참조하세요.

머지 리퀘스트 리포트 크기 제한#

20 MB 제한을 초과하는 리포트는 로드되지 않습니다. 영향받은 리포트:

고급 검색 제한#

인덱싱된 최대 파일 크기#

Elasticsearch에서 인덱싱된 저장소 파일 내용에 제한을 설정할 수 있습니다. 이 제한보다 큰 파일은 파일 이름만 인덱싱합니다. 파일 내용은 인덱싱되지 않고 검색할 수 없습니다.

제한을 설정하면 인덱싱 프로세스의 메모리 사용량과 전체 인덱스 크기를 줄이는 데 도움이 됩니다. 이 값은 기본값이 1024 KiB (1 MiB)로, 이보다 큰 텍스트 파일은 사람이 읽을 용도가 아닌 경우가 많습니다.

무제한 파일 크기는 지원되지 않으므로 반드시 제한을 설정해야 합니다. 이 값을 GitLab Sidekiq 노드의 메모리 양보다 크게 설정하면 GitLab Sidekiq 노드의 메모리가 부족해집니다. 인덱싱 중에 이 양의 메모리가 미리 할당되기 때문입니다.

최대 필드 길이#

고급 검색을 위해 인덱싱된 텍스트 필드 내용에 제한을 설정할 수 있습니다. 최대값을 설정하면 인덱싱 프로세스의 부하를 줄이는 데 도움이 됩니다. 텍스트 필드가 이 제한을 초과하면 텍스트가 해당 문자 수로 잘립니다. 나머지 텍스트는 인덱싱되지 않고 검색할 수 없습니다. 이것은 인덱싱되는 저장소 파일을 제외한 모든 인덱싱된 데이터에 적용되며, 저장소 파일에는 별도의 제한이 있습니다. 자세한 내용은 인덱싱된 최대 파일 크기를 읽어보세요.

  • GitLab.com에서 필드 길이 제한은 20,000자입니다.

  • GitLab Self-Managed 인스턴스의 경우 필드 길이는 기본적으로 무제한입니다.

Elasticsearch를 활성화할 때 GitLab Self-Managed 인스턴스에 이 제한을 구성할 수 있습니다. 비활성화하려면 제한을 0으로 설정합니다.

수학 렌더링 제한#

히스토리
  • GitLab 16.5에서 도입되었습니다.
  • Wiki 및 저장소 파일에서 50 노드 제한이 제거되었습니다.

  • 그룹 수준 설정이 추가되어 수학 렌더링 제한을 비활성화할 수 있게 되었고, GitLab 16.9에서 wiki 및 저장소 파일에 대한 수학 제한이 기본적으로 다시 활성화되었습니다.

GitLab은 Markdown 필드에서 수학을 렌더링할 때 기본 제한을 적용합니다. 이 제한은 더 나은 보안과 성능을 제공합니다.

이슈, 머지 리퀘스트, 에픽, wiki 및 저장소 파일에 대한 제한:

  • 최대 매크로 확장 수: 1000.

  • em 단위의 최대 사용자 지정 크기: 20.

  • 렌더링된 최대 노드 수: 50.

  • 수학 블록의 최대 문자 수: 1000.

  • 최대 렌더링 시간: 2000 ms.

GitLab Self-Managed를 실행하고 사용자 입력을 신뢰하는 경우 이 제한을 비활성화할 수 있습니다. GitLab Rails 콘솔을 사용합니다:

ApplicationSetting.update(math_rendering_limits_enabled: false)

이 제한은 GraphQL 또는 REST API를 사용하여 그룹별로 비활성화할 수도 있습니다.

제한이 비활성화되면 이슈, 머지 리퀘스트, 에픽, wiki 및 저장소 파일에서 수학이 대부분 제한 없이 렌더링됩니다. 이는 악의적인 행위자가 브라우저에서 볼 때 DoS를 유발할 수 있는 수학을 추가할 수 있음을 의미합니다. 신뢰하는 사람만 콘텐츠를 추가할 수 있도록 해야 합니다.

Wiki 제한#

스니펫 제한#

스니펫 설정에 대한 문서를 참조하세요.

Design Management 제한#

이슈에 디자인 추가 섹션의 제한을 참조하세요.

Push 이벤트 제한#

최대 push 크기#

최대 허용 push 크기.

GitLab Self-Managed에서는 기본적으로 설정되지 않습니다. GitLab.com의 경우 계정 및 제한 설정을 참조하세요.

웹훅 및 프로젝트 서비스#

단일 push에서 변경 사항(브랜치 또는 태그) 총 수. 변경 사항이 지정된 제한보다 많으면 훅이 실행되지 않습니다.

자세한 내용은 다음을 참조하세요:

활동#

단일 push에서 개별 push 이벤트 또는 대량 push 이벤트가 생성되는지 결정하기 위한 변경 사항(브랜치 또는 태그) 총 수.

자세한 내용은 Push 이벤트 활동 제한 및 대량 push 이벤트 문서에서 찾을 수 있습니다.

패키지 레지스트리 제한#

파일 크기 제한#

GitLab 패키지 레지스트리에 업로드된 패키지의 기본 최대 파일 크기는 형식에 따라 다릅니다:

  • Conan: 3 GB

  • Generic: 5 GB

  • Helm: 5 MB

  • Maven: 3 GB

  • npm: 500 MB

  • NuGet: 500 MB

  • PyPI: 3 GB

  • Terraform: 1 GB

GitLab.com의 최대 파일 크기는 다를 수 있습니다.

GitLab Self-Managed 인스턴스에 이 제한을 설정하려면 Admin area를 통해 하거나 GitLab Rails 콘솔에서 다음을 실행합니다:

# File size limit is stored in bytes

# For Conan Packages
Plan.default.actual_limits.update!(conan_max_file_size: 100.megabytes)

# For npm Packages
Plan.default.actual_limits.update!(npm_max_file_size: 100.megabytes)

# For NuGet Packages
Plan.default.actual_limits.update!(nuget_max_file_size: 100.megabytes)

# For Maven Packages
Plan.default.actual_limits.update!(maven_max_file_size: 100.megabytes)

# For PyPI Packages
Plan.default.actual_limits.update!(pypi_max_file_size: 100.megabytes)

# For Debian Packages
Plan.default.actual_limits.update!(debian_max_file_size: 100.megabytes)

# For Helm Charts
Plan.default.actual_limits.update!(helm_max_file_size: 100.megabytes)

# For Generic Packages
Plan.default.actual_limits.update!(generic_packages_max_file_size: 100.megabytes)

모든 파일 크기를 허용하려면 제한을 0으로 설정합니다.

반환되는 패키지 버전#

지정된 NuGet 패키지 이름의 버전을 요청할 때, GitLab 패키지 레지스트리는 최대 300개의 버전을 반환합니다.

Dependency Proxy 제한#

Dependency Proxy에 캐시된 이미지의 최대 파일 크기는 파일 유형에 따라 다릅니다:

  • 이미지 blob: 5 GB

  • 이미지 manifest: 10 MB

최대 담당자 및 검토자 수#

히스토리
  • 최대 담당자가 GitLab 15.6에서 도입되었습니다.
  • 최대 검토자가 GitLab 15.9에서 도입되었습니다.

이슈 및 머지 리퀘스트는 다음 최대값을 적용합니다:

  • 최대 담당자: 200

  • 최대 검토자: 200

최대 프로젝트 push 미러 수#

히스토리
  • GitLab 18.9에서 도입되었습니다.

각 프로젝트는 최대 10개의 활성화된 push 미러를 가질 수 있습니다. 이 제한은 과도한 동시 동기화 작업으로 인한 성능 문제를 방지합니다.

더 많은 미러가 필요한 경우:

  • 사용하지 않는 미러를 비활성화합니다.

  • 여러 대상을 단일 미러로 결합하여 미러를 통합합니다.

GitLab.com의 CDN 기반 제한#

애플리케이션 기반 제한 외에도, GitLab.com은 Git over SSH를 보호하기 위해 Cloudflare의 표준 DDoS 보호 및 Spectrum을 사용하도록 구성되어 있습니다. Cloudflare는 클라이언트 TLS 연결을 종료하지만 애플리케이션을 인식하지 못하며 사용자 또는 그룹에 연결된 제한에는 사용할 수 없습니다. Cloudflare 페이지 규칙 및 속도 제한은 Terraform으로 구성됩니다. 이러한 구성에는 악의적인 활동을 감지하고 공개되면 이러한 작업을 약화시킬 수 있는 보안 및 남용 구현이 포함되어 있으므로 공개되지 않습니다.

컨테이너 저장소 태그 삭제 제한#

컨테이너 저장소 태그는 컨테이너 레지스트리에 있으므로 각 태그 삭제는 컨테이너 레지스트리에 대한 네트워크 요청을 트리거합니다. 이 때문에 단일 API 호출이 삭제할 수 있는 태그 수를 20으로 제한합니다.

프로젝트 수준 Secure Files API 제한#

secure files API는 다음 제한을 적용합니다:

  • 파일은 5 MB보다 작아야 합니다.

  • 프로젝트는 100개 이상의 secure file을 가질 수 없습니다.

Changelog API 제한#

히스토리
  • GitLab 15.1에서 changelog_commits_limitation 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.

changelog API는 다음 제한을 적용합니다:

  • fromto 사이의 커밋 범위는 15000개 커밋을 초과할 수 없습니다.

Value Stream Analytics 제한#

  • 각 네임스페이스(그룹 또는 프로젝트 등)는 최대 50개의 value stream을 가질 수 있습니다.

  • 각 value stream은 최대 15개의 단계를 가질 수 있습니다.

감사 이벤트 스트리밍 대상 제한#

커스텀 HTTP 엔드포인트#

  • 각 최상위 그룹은 최대 5개의 커스텀 HTTP 스트리밍 대상을 가질 수 있습니다.

Google Cloud Logging#

  • 각 최상위 그룹은 최대 5개의 Google Cloud Logging 스트리밍 대상을 가질 수 있습니다.

Amazon S3#

  • 각 최상위 그룹은 최대 5개의 Amazon S3 스트리밍 대상을 가질 수 있습니다.

SBOM을 사용한 종속성 스캐닝 제한#

SBOM 기능을 사용한 종속성 스캐닝은 다음 제한이 있는 내부 API를 사용합니다:

  • 시간당 프로젝트당 최대 업로드 요청 수: 400

  • 시간당 프로젝트당 최대 다운로드 요청 수: 6000

종속성 스캐닝 설정을 사용하여 GitLab Self-Managed 인스턴스에 이 제한을 구성할 수 있습니다.

커밋 및 Files API 제한#

히스토리
  • GitLab 18.7에서 도입되었습니다.

커밋 및 Files API는 다음 엔드포인트에 최대 크기 및 속도 제한을 적용합니다:

  • POST /projects/:id/repository/commits - 커밋 생성

  • POST /projects/:id/repository/files/:file_path - 저장소에 파일 생성

  • PUT /projects/:id/repository/files/:file_path - 저장소의 파일 업데이트

  • 최대 요청 크기: 이 제한을 초과하는 요청은 다음 메시지와 함께 413 Request Entity Too Large 오류를 받습니다: RequestBody: upload failed: the upload size <size> is over maximum of 314572800 bytes: entity is too large. 기본값은 300 MB (314,572,800바이트)입니다.

  • 속도 제한: 20 MB를 초과하는 요청에 대해 30초당 3개 요청.

최대 요청 크기는 GITLAB_COMMITS_MAX_REQUEST_SIZE_BYTES 환경 변수를 설정하여 GitLab Self-Managed에서 구성할 수 있습니다. 이 변수는 최대 요청 크기를 바이트 단위로 설정합니다. 환경 변수를 설정하는 방법에 대한 지침은 HTTP 요청 제한에서 찾을 수 있습니다.

모든 인스턴스 제한 나열#

모든 인스턴스 제한값을 나열하려면 GitLab Rails 콘솔에서 다음을 실행합니다:

Plan.default.actual_limits

샘플 출력:

id: 1,
plan_id: 1,
ci_pipeline_size: 0,
ci_active_jobs: 0,
project_hooks: 100,
group_hooks: 50,
ci_project_subscriptions: 3,
ci_pipeline_schedules: 10,
offset_pagination_limit: 50000,
ci_instance_level_variables: "[FILTERED]",
storage_size_limit: 0,
ci_max_artifact_size_lsif: 200,
ci_max_artifact_size_archive: 0,
ci_max_artifact_size_metadata: 0,
ci_max_artifact_size_trace: "[FILTERED]",
ci_max_artifact_size_junit: 0,
ci_max_artifact_size_sast: 0,
ci_max_artifact_size_dependency_scanning: 350,
ci_max_artifact_size_container_scanning: 150,
ci_max_artifact_size_dast: 0,
ci_max_artifact_size_codequality: 0,
ci_max_artifact_size_license_management: 0,
ci_max_artifact_size_license_scanning: 100,
ci_max_artifact_size_performance: 0,
ci_max_artifact_size_metrics: 0,
ci_max_artifact_size_metrics_referee: 0,
ci_max_artifact_size_network_referee: 0,
ci_max_artifact_size_dotenv: 0,
ci_max_artifact_size_cobertura: 0,
ci_max_artifact_size_terraform: 5,
ci_max_artifact_size_accessibility: 0,
ci_max_artifact_size_cluster_applications: 0,
ci_max_artifact_size_secret_detection: "[FILTERED]",
ci_max_artifact_size_requirements: 0,
ci_max_artifact_size_coverage_fuzzing: 0,
ci_max_artifact_size_browser_performance: 0,
ci_max_artifact_size_load_performance: 0,
ci_needs_size_limit: 2,
conan_max_file_size: 3221225472,
maven_max_file_size: 3221225472,
npm_max_file_size: 524288000,
nuget_max_file_size: 524288000,
pypi_max_file_size: 3221225472,
generic_packages_max_file_size: 5368709120,
golang_max_file_size: 104857600,
debian_max_file_size: 3221225472,
project_feature_flags: 200,
ci_max_artifact_size_api_fuzzing: 0,
ci_pipeline_deployments: 500,
pull_mirror_interval_seconds: 300,
daily_invites: 0,
rubygems_max_file_size: 3221225472,
terraform_module_max_file_size: 1073741824,
helm_max_file_size: 5242880,
ci_registered_group_runners: 1000,
ci_registered_project_runners: 1000,
ci_daily_pipeline_schedule_triggers: 0,
ci_max_artifact_size_cluster_image_scanning: 0,
ci_jobs_trace_size_limit: "[FILTERED]",
pages_file_entries: 200000,
dast_profile_schedules: 1,
external_audit_event_destinations: 5,
dotenv_variables: "[FILTERED]",
dotenv_size: 5120,
pipeline_triggers: 25000,
project_ci_secure_files: 100,
repository_size: 0,
security_policy_scan_execution_schedules: 0,
web_hook_calls_mid: 0,
web_hook_calls_low: 0,
project_ci_variables: "[FILTERED]",
group_ci_variables: "[FILTERED]",
ci_max_artifact_size_cyclonedx: 1,
rpm_max_file_size: 5368709120,
pipeline_hierarchy_size: 1000,
ci_max_artifact_size_requirements_v2: 0,
enforcement_limit: 0,
notification_limit: 0,
dashboard_limit_enabled_at: nil,
web_hook_calls: 0,
project_access_token_limit: 0,
google_cloud_logging_configurations: 5,
ml_model_max_file_size: 10737418240,
limits_history: {},
audit_events_amazon_s3_configurations: 5

일부 제한 값은 Rails 콘솔에서의 필터링으로 인해 목록에 [FILTERED]로 표시됩니다.