正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Gitalyタイムアウト

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

Gitalyは、設定可能なタイムアウトを2種類提供します:

  • GitLabユーザーインターフェースを使用して設定された呼び出しタイムアウト。
  • Gitaly設定ファイルを使用して設定されたネゴシエーションタイムアウト。

呼び出しタイムアウトを設定します

実行時間の長いGitaly呼び出しが不必要にリソースを消費しないように、以下の呼び出しタイムアウトを設定します。呼び出しタイムアウトを設定するには:

  1. 左側のサイドバーの下部で、管理者を選択します。
  2. 設定 > 設定を選択します。
  3. Gitalyタイムアウトセクションを展開します。
  4. 必要に応じて各タイムアウトを設定します。

利用可能な呼び出しタイムアウト

Gitalyの操作ごとに異なる呼び出しタイムアウトを利用できます。

タイムアウトデフォルト説明
デフォルト55秒ほとんどのGitaly呼び出しのタイムアウト(git fetchおよびpush操作、またはSidekiqジョブには適用されません)。たとえば、リポジトリがディスク上に存在するかどうかの確認などです。これにより、ウェブリクエストで行われたGitalyの呼び出しが、リクエストタイムアウト全体を超えることがなくなります。これは、ワーカータイムアウトよりも短くする必要があります。これは、Puma用に設定できます。Gitalyの呼び出しタイムアウトがワーカータイムアウトを超えると、ワーカーを強制終了しなくても済むように、ワーカータイムアウトの残りの時間が使用されます。
Fast10秒リクエストで使用される高速Gitaly操作のタイムアウト。複数回使用される場合もあります。たとえば、リポジトリがディスク上に存在するかどうかの確認などです。フェイルファスト操作がこのしきい値を超えると、ストレージシャードに問題が発生する可能性があります。フェイルファストは、GitLabインスタンスの安定性を維持するのに役立ちます。
中程度30秒高速である必要がある(リクエスト内にある可能性がある)が、リクエストで複数回使用しないことが望ましいGitaly操作のタイムアウト。たとえば、バイナリラージオブジェクトのロードなどです。デフォルトとFastの間に設定する必要があるタイムアウト。

ネゴシエーションタイムアウトを設定します

ネゴシエーションタイムアウトの増加が必要になる場合があります:

  • 特に大きなリポジトリの場合。
  • これらのコマンドを並行して実行する場合。

ネゴシエーションタイムアウトは、以下に対して設定できます:

  • git-upload-pack(1)。Gitalyノードがgit fetchを実行すると呼び出すものです。
  • git-upload-archive(1)。Gitalyノードがgit archive --remoteを実行すると呼び出すものです。

これらのタイムアウトを設定するには:

/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操作のnegotiation phaseにのみ影響し、転送全体には影響しません。