Gitalyタイムアウト
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
Gitalyは、設定可能なタイムアウトを2種類提供します:
- GitLabユーザーインターフェースを使用して設定された呼び出しタイムアウト。
- Gitaly設定ファイルを使用して設定されたネゴシエーションタイムアウト。
呼び出しタイムアウトを設定します
実行時間の長いGitaly呼び出しが不必要にリソースを消費しないように、以下の呼び出しタイムアウトを設定します。呼び出しタイムアウトを設定するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 設定 > 設定を選択します。
- Gitalyタイムアウトセクションを展開します。
- 必要に応じて各タイムアウトを設定します。
利用可能な呼び出しタイムアウト
Gitalyの操作ごとに異なる呼び出しタイムアウトを利用できます。
| タイムアウト | デフォルト | 説明 |
|---|---|---|
| デフォルト | 55秒 | ほとんどのGitaly呼び出しのタイムアウト(git fetchおよびpush操作、またはSidekiqジョブには適用されません)。たとえば、リポジトリがディスク上に存在するかどうかの確認などです。これにより、ウェブリクエストで行われたGitalyの呼び出しが、リクエストタイムアウト全体を超えることがなくなります。これは、ワーカータイムアウトよりも短くする必要があります。これは、Puma用に設定できます。Gitalyの呼び出しタイムアウトがワーカータイムアウトを超えると、ワーカーを強制終了しなくても済むように、ワーカータイムアウトの残りの時間が使用されます。 |
| Fast | 10秒 | リクエストで使用される高速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にのみ影響し、転送全体には影響しません。