Skip to content

Support Gitaly Rate Limit (Concurrency) Configuration

See gitaly#429 (closed)

Gitaly now allows per-repo-per-RPC concurrency limits which prevent a single repository from calling git gc more than once concurrently, for example.

The configuration looks like:

[[concurrency]]
rpc = "/gitaly.RepositoryService/GarbageCollect"
max_per_repo = 1

[[concurrency]]
rpc = "/gitaly.RepositoryService/RepackIncremental"
max_per_repo = 1

[[concurrency]]
rpc = "/gitaly.RepositoryService/RepackFull"
max_per_repo = 1

[[concurrency]]
rpc = "/gitaly.RepositoryService/GetArchive"
max_per_repo = 20

[[concurrency]]
rpc = "/gitaly.SmartHTTPService/PostUploadPack"
max_per_repo = 40

[[concurrency]]
rpc = "/gitaly.SmartHTTPService/PostReceivePack"
max_per_repo = 20

[[concurrency]]
rpc = "/gitaly.SSHService/SSHUploadPack"
max_per_repo = 40

[[concurrency]]
rpc = "/gitaly.SSHService/SSHReceivePack"
max_per_repo = 20

We would like to configure this via Omnibus. The proposed configuration would be:

gitaly['concurrency'] = [
  {
   'rpc' => "/gitaly.SmartHTTPService/PostReceivePack",
   'max_per_repo' => 20
  }, {
   'rpc' => "/gitaly.SSHService/SSHUploadPack",
   'max_per_repo' => 20
  }
]
Edited by Andrew Newdigate