InfoGrab Docs

Concurrency limiting

Gitaly에서 RPC 및 pack-objects 동시성 제한을 설정하여 서버 과부하를 방지하는 방법을 설명합니다.

Gitaly를 실행하는 서버의 과부하를 방지하기 위해 다음의 동시성을 제한할 수 있습니다: RPC. Pack objects. 이러한 제한은 고정하거나 적응형으로 설정할 수 있습니다. Warning 환경에 대한 제한 활성화는 예상치 못한 트래픽으로부터 보호하는 등 특정 상황에서만 주의하여 수행해야 합니다. 제한에 도달하면 사용자에게 부정적인 영향을 미치는 연결 끊김이 발생합니다. 일관되고 안정적인 성능을 위해 먼저 노드 사양 조정이나 대형 저장소 검토 또는 워크로드와 같은 다른 옵션을 탐색해야 합니다. RPC 동시성 제한 # 저장소를 클론하거나 풀할 때 다양한 RPC가 백그라운드에서 실행됩니다. 특히 Git pack RPC는: SSHUploadPackWithSidechannel (Git SSH용). PostUploadPackWithSidechannel (Git HTTP용). 이러한 RPC는 다음과 같은 상황에서 상당한 영향을 미칠 수 있는 많은 양의 리소스를 소비할 수 있습니다: 예상치 못한 높은 트래픽. 모범 사례를 따르지 않는 대형 저장소 대상 실행. Gitaly 구성 파일의 동시성 제한을 사용하여 이러한 시나리오에서 Gitaly 서버가 압도되는 것을 방지할 수 있습니다. 예를 들어: # in /etc/gitlab/gitlab.rb gitaly[ 'configuration' ] = { # ... concurrency: [ { rpc: '/gitaly.SmartHTTPService/PostUploadPackWithSidechannel' , max_per_repo: 20 , max_queue_wait: '1s' , max_queue_size: 10 , }, { rpc: '/gitaly.SSHService/SSHUploadPackWithSidechannel' , max_per_repo: 20 , max_queue_wait: '1s' , max_queue_size: 10 , }, ], } rpc 는 저장소당 동시성 제한을 설정할 RPC의 이름입니다. max_per_repo 는 저장소당 주어진 RPC에 대한 최대 진행 중 RPC 호출 수입니다. max_queue_wait 는 요청이 Gitaly에 의해 처리되기 전에 동시성 큐에서 대기할 수 있는 최대 시간입니다. max_queue_size 는 Gitaly가 요청을 거부하기 전에 동시성 큐(RPC 메서드당)가 증가할 수 있는 최대 크기입니다. 이것은 주어진 RPC에 대한 진행 중 RPC 호출 수를 제한합니다. 제한은 저장소당 적용됩니다. 이전 예제에서: Gitaly 서버가 제공하는 각 저장소는 동시에 최대 20개의 PostUploadPackWithSidechannel 및 SSHUploadPackWithSidechannel RPC 호출을 가질 수 있습니다. 20개의 슬롯을 모두 사용한 저장소에 다른 요청이 들어오면 해당 요청은 큐에 들어갑니다. 요청이 큐에서 1초 이상 기다리면 오류로 거부됩니다. 큐가 10을 초과하면 후속 요청은 오류로 거부됩니다. Note 이러한 제한에 도달하면 사용자가 연결 끊