Gitaly 타임아웃

Tier: Free, Premium, Ultimate Offering: Self-Managed

Gitaly은 두 가지 유형의 구성 가능한 타임아웃을 제공합니다.

  • GitLab UI를 사용하여 구성하는 호출 시간 초과.
  • Gitaly 구성 파일을 사용하여 구성하는 협상 시간 초과.

호출 시간 초과 구성

다음 호출 시간 초과를 구성하여 장시간 실행되는 Gitaly 호출이 불필요하게 리소스를 소비하지 않도록 합니다. 호출 시간 초과를 구성하려면 다음 단계를 수행합니다.

  1. 왼쪽 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
  2. 설정 > 환경 설정을 선택합니다.
  3. Gitaly 타임아웃 섹션을 확장합니다.
  4. 필요한대로 각 타임아웃을 설정합니다.

사용 가능한 호출 시간 초과

다양한 Gitaly 작업에 대해 다양한 호출 시간 초과가 사용할 수 있습니다.

시간 초과 기본값 설명
기본값 55초 대부분의 Gitaly 호출에 대한 타임아웃( git fetchpush 작업 또는 Sidekiq 작업에 적용되지 않음). 예를 들어, 디스크에 리포지터리가 있는지 확인. 웹 요청에서 이루어지는 Gitaly 호출이 전체 요청 타임아웃을 초과하지 않도록 합니다. 웹 요청에서 이루어지는 Gitaly 호출이 전체 요청 타임아웃을 초과하지 않도록 합니다. 워커 타임아웃을 설정할 수 있는 Puma을 위한 시간 초과보다 짧아야 합니다. Gitaly 호출의 타임아웃이 워커 타임아웃을 초과할 경우 남은 시간은 워커를 종료하지 않고 사용하기 위해 사용됩니다.
빠른 10초 요청에서 사용되는 빠른 Gitaly 작업의 타임아웃으로 때로는 여러 번 사용됩니다. 예를 들어, 디스크에 리포지터리가 있는지 확인. 빠른 작업이 이 임계값을 초과하는 경우, 리포지터리 샤드에 문제가 있을 수 있습니다. 빠른 실패가 GitLab 인스턴스의 안정성을 유지하는 데 도움이 될 수 있습니다.
중간 30초 빠르지만(아마 요청에서) 가능한한 여러 번 사용되지 않아야 하는 Gitaly 작업을 위한 타임아웃입니다. 예를 들어, 블롭을 로딩하는 작업. 기본값과 빠른 값 사이에 설정해야 하는 타임아웃입니다.

협상 시간 초과 구성

다음 경우에 협상 시간 초과를 늘려야 할 수 있습니다.

  • 특히 큰 리포지터리의 경우.
  • 병렬로 이러한 명령을 수행하는 경우.

다음과 같은 시간 초과를 구성할 수 있습니다:

  • git-upload-pack(1), 이것은 git fetch를 실행할 때 Gitaly 노드에 의해 호출됩니다.
  • git-upload-archive(1), 이것은 git archive --remote를 실행할 때 Gitaly 노드에 의해 호출됩니다.

이러한 시간 초과를 구성하려면:

Linux package (Omnibus)

/etc/gitlab/gitlab.rb을 편집합니다.

gitaly['configuration'] = {
    timeout: {
        upload_pack_negotiation: '10m',      # 10분
        upload_archive_negotiation: '20m',   # 20분
    }
}
Self-compiled (source)

/home/git/gitaly/config.toml을 편집합니다.

[timeout]
upload_pack_negotiation = "10m"
upload_archive_negotiation = "20m"

값에 대해 Go의 ParseDuration 형식을 사용합니다.

이러한 시간 초과는 원격 Git 작업의 협상 단계에만 영향을 미칩니다. 전체 전송에는 영향을 주지 않습니다.