{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: 私有化部署

{{< /details >}}

Gitaly 提供两种类型的可配置超时:

  1. 调用超时,通过极狐GitLab UI 配置。
  2. 协商超时,通过 Gitaly 配置文件进行配置。

配置调用超时

配置以下调用超时,以确保长时间运行的 Gitaly 调用不会不必要地占用资源。要配置调用超时:

  1. 在左侧侧边栏底部,选择 管理员
  2. 选择 设置 > 首选项
  3. 展开 Gitaly 超时 部分。
  4. 根据需要设置每个超时。

可用的调用超时

不同的 Gitaly 操作有不同的调用超时。

超时 默认值 描述
默认 55 秒 大多数 Gitaly 调用的超时(不适用于 git fetchpush 操作或 Sidekiq 作业)。例如,检查磁盘上是否存在存储库。确保在 Web 请求中进行的 Gitaly 调用不能超过整个请求的超时。它应该比可以为 Puma 配置的 worker 超时 短。如果 Gitaly 调用超时超过 worker 超时,则使用 worker 超时的剩余时间以避免必须终止 worker。
快速 10 秒 用于请求中多次使用的快速 Gitaly 操作的超时。例如,检查磁盘上是否存在存储库。如果快速操作超过此阈值,可能是存储分片出现问题。快速失败有助于维护极狐GitLab 实例的稳定性。
中等 30 秒 应该快速(可能在请求中)的 Gitaly 操作的超时,但最好不要在请求中多次使用。例如,加载 blobs。超时应该设置在默认和快速之间。

配置协商超时

{{< history >}}

  • 引入于极狐GitLab 16.5。

{{< /history >}}

您可能需要增加协商超时:

  1. 对于特别大的存储库。
  2. 并行执行这些命令时。

您可以为以下操作配置协商超时:

  1. git-upload-pack(1),当您执行 git fetch 时由 Gitaly 节点调用。
  2. git-upload-archive(1),当您执行 git archive --remote 时由 Gitaly 节点调用。

要配置这些超时:

{{< tabs >}}

{{< tab title=”Linux package (Omnibus)” >}}

编辑 /etc/gitlab/gitlab.rb

gitaly['configuration'] = {
    timeout: {
        upload_pack_negotiation: '10m',      # 10 分钟
        upload_archive_negotiation: '20m',   # 20 分钟
    }
}

{{< /tab >}}

{{< tab title=”Self-compiled (source)” >}}

编辑 /home/git/gitaly/config.toml

[timeout]
upload_pack_negotiation = "10m"
upload_archive_negotiation = "20m"

{{< /tab >}}

{{< /tabs >}}

对于值,请使用 Go 中 ParseDuration 的格式。

这些超时仅影响远程 Git 操作的协商阶段,而不是整个传输。