Gitaly 超时
Gitaly 提供两种类型的可配置超时:
- 调用超时,通过使用极狐GitLab UI 配置。
- 谈判(Negotiation)超时,通过使用 Gitaly 配置文件配置。
配置调用超时
配置以下调用超时以确保长时间运行的 Gitaly 调用不会不必要地占用资源。要配置调用超时:
- 在左侧导航栏底部,选择 管理中心。
- 选择 设置 > 偏好设置。
- 展开 Gitaly 超时 部分。
- 设置每个超时。
可用的超时
以下超时可用。
超时 | 默认 | 描述 |
---|---|---|
Default | 55 seconds | 大多数 Gitaly 调用超时(对于 git fetch 和 push 操作或 Sidekiq 作业不强制)。例如,检查磁盘上是否存在仓库。确保在 Web 请求中进行的 Gitaly 调用不能超过整个请求超时。 它应该比可以为 Puma 配置的 worker 超时短。如果 Gitaly 调用超时超过 worker 超时,则使用 worker 超时的剩余时间来避免不得不终止 worker。 |
Fast | 10 seconds | 请求中使用的快速 Gitaly 操作超时,有时是多次。例如,检查磁盘上是否存在仓库。如果快速操作超过此阈值,则存储分片可能存在问题。快速失败有助于保持极狐GitLab 实例的稳定性。 |
Medium | 30 seconds | 应该很快的 Gitaly 操作的超时(可能在请求中),但最好不要在请求中多次使用。例如,加载 blob,应该在 Default 和 Fast 之间设置。 |
配置 negotiation 超时时间
- 自极狐GitLab 16.5 引入。
您可能需要增加 negotiation 超时时间:
- 部分大型仓库。
- 当并行执行这些命令时。
您可以为以下命令配置 negotiation 超时:
-
git-upload-pack(1)
,当您执行git fetch
时,Gitaly 节点会涉及到这一点。 -
git-upload-archive(1)
,当您执行git archive --remote
时,Gitaly 节点会涉及到这一点。
要配置这些超时:
::Tabs
:::TabTitle Linux package (Omnibus)
编辑 /etc/gitlab/gitlab.rb
:
gitaly['configuration'] = {
timeout: {
upload_pack_negotiation: '10m', # 10 minutes
upload_archive_negotiation: '20m', # 20 minutes
}
}
:::TabTitle Self-compiled (source)
编辑 /home/git/gitaly/config.toml
:
[timeout]
upload_pack_negotiation = "10m"
upload_archive_negotiation = "20m"
::EndTabs
对于值来说,请使用 Go 中的 ParseDuration
格式。
这些超时仅影响远程 Git 操作的 negotiation phase,而不是整个传输。