Help us learn about your current experience with the documentation. Take the survey.
Gitaly 超时
- 版本:Free, Premium, Ultimate
- 产品:GitLab Self-Managed
Gitaly 提供两种可配置的超时类型:
- 调用超时 (Call timeouts),通过 GitLab 用户界面 (UI) 进行配置。
- 协商超时 (Negotiation timeouts),通过 Gitaly 配置文件进行配置。
配置调用超时
配置以下调用超时,以确保长时间运行的 Gitaly 调用不会无谓地占用资源。配置步骤如下:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 偏好设置。
- 展开 Gitaly 超时 部分。
- 根据需要设置每个超时值。
可用的调用超时
不同的 Gitaly 操作对应不同的调用超时。
| 超时类型 | 默认值 | 描述 |
|---|---|---|
| 默认 | 55 秒 | 适用于大多数 Gitaly 调用的超时(不对 git fetch 和 push 操作,或 Sidekiq 任务强制执行)。例如,检查仓库是否存在于磁盘上。确保在 Web 请求中进行的 Gitaly 调用不会超过整个请求的超时时间。它应该短于可为 Puma 配置的 worker timeout。如果 Gitaly 调用超时超过了 worker 超时,则会使用 worker 超时的剩余时间,以避免终止 worker。 |
| 快速 | 10 秒 | 用于请求中快速 Gitaly 操作的超时,有时一个请求中会多次使用。例如,检查仓库是否存在于磁盘上。如果快速操作超过此阈值,则存储分片可能存在问题。快速失败有助于维护 GitLab 实例的稳定性。 |
| 中等 | 30 秒 | 适用于本应快速(可能在请求中)但最好不在一个请求中多次使用的 Gitaly 操作的超时。例如,加载 Blob。超时值应设置在“默认”和“快速”之间。 |
配置协商超时
在以下情况下,您可能需要增加协商超时:
- 对于特别大的仓库。
- 当并行执行这些命令时。
您可以为以下命令配置协商超时:
git-upload-pack(1),当您执行git fetch时由 Gitaly 节点调用。git-upload-archive(1),当您执行git archive --remote时由 Gitaly 节点调用。
要配置这些超时:
编辑 /etc/gitlab/gitlab.rb:
gitaly['configuration'] = {
timeout: {
upload_pack_negotiation: '10m', # 10 minutes
upload_archive_negotiation: '20m', # 20 minutes
}
}编辑 /home/git/gitaly/config.toml:
[timeout]
upload_pack_negotiation = "10m"
upload_archive_negotiation = "20m"对于超时值,请使用 Go 语言中的 ParseDuration 格式。
这些超时仅影响远程 Git 操作的协商阶段,而不影响整个传输过程。