Gitaly 타임아웃
Tier: Free, Premium, Ultimate
Offering: Self-managed
Gitaly은 구성 가능한 두 가지 유형의 타임아웃을 제공합니다.
- GitLab UI를 사용하여 구성하는 호출 타임아웃.
- Gitaly 구성 파일을 사용하여 구성하는 협상 타임아웃.
호출 타임아웃 구성
다음 호출 타임아웃을 구성하여 실행 시간이 긴 Gitaly 호출이 불필요하게 리소스를 사용하지 않도록 합니다. 호출 타임아웃을 구성하려면 다음 단계를 수행하세요.
- 왼쪽 사이드바에서 아래쪽에서 관리자를 선택합니다.
- 설정 > 기본 설정을 선택합니다.
- Gitaly 타임아웃 섹션을 확장합니다.
- 각 타임아웃을 필요에 맞게 설정합니다.
사용 가능한 호출 타임아웃
다양한 Gitaly 작업에 대해 다양한 호출 타임아웃이 제공됩니다.
타임아웃 | 기본값 | 설명 |
---|---|---|
기본 | 55초 | 대부분의 Gitaly 호출에 대한 타임아웃( git fetch 및 git push 작업 또는 Sidekiq 작업에는 적용되지 않음). 예를 들어 디스크에 저장소가 있는지 확인하는 경우. 웹 요청에서 이루어지는 Gitaly 호출이 전체 요청 타임아웃을 초과하지 않도록 합니다. 웹 요청에서 이루어지는 Gitaly 호출이 전체 요청 타임아웃을 초과하지 않도록 합니다. Puma용으로 구성할 수 있는 worker timeout보다 짧아야 합니다. Gitaly 호출 타임아웃이 worker timeout을 초과하면 남은 시간이 worker를 종료하지 않고 남은 시간을 사용합니다.
|
빠름 | 10초 | 요청에 사용되는 빠른 Gitaly 작업에 대한 타임아웃으로 때로는 여러 번 발생합니다. 예를 들어 디스크에 저장소가 있는지 확인하는 경우. 빠른 작업이 이 임계값을 초과하는 경우에는 저장소 샤드에 문제가 있을 수 있습니다. 빠른 실패는 GitLab 인스턴스의 안정성을 유지하는 데 도움이 될 수 있습니다. |
중간 | 30초 | 빠르지만 가능한 한 요청에서 여러 번 사용되지 않아야 하는 Gitaly 작업에 대한 타임아웃입니다. 예를 들어 블롭 로드. 기본과 빠른 사이에 설정해야 하는 타임아웃입니다. |
협상 타임아웃 구성
- GitLab 16.5에서 도입되었습니다.
특히 큰 저장소에 대해 협상 타임아웃을 늘려야 할 수 있습니다.
- 병렬로 이러한 명령을 실행할 때.
다음과 같은 명령에 대해 협상 타임아웃을 구성할 수 있습니다.
-
git-upload-pack(1)
:git fetch
를 실행할 때 Gitaly 노드에서 호출됩니다. -
git-upload-archive(1)
:git archive --remote
를 실행할 때 Gitaly 노드에서 호출됩니다.
이러한 타임아웃을 구성하려면:
Linux 패키지 (Omnibus)
/etc/gitlab/gitlab.rb
파일을 편집합니다.
gitaly['configuration'] = {
timeout: {
upload_pack_negotiation: '10m', # 10분
upload_archive_negotiation: '20m', # 20분
}
}
직접 컴파일(원본)
/home/git/gitaly/config.toml
파일을 편집합니다.
[timeout]
upload_pack_negotiation = "10m"
upload_archive_negotiation = "20m"
값은 Go의 ParseDuration
형식을 사용합니다.
이러한 타임아웃은 원격 Git 작업의 협상 단계에만 영향을 미치며 전체 전송에는 영향을 주지 않습니다.