2026 マルチリージョンのリモート Mac:Git と Docker レジストリの再試行・タイムアウト・キャッシュ Runbook

約 14 分 · MACCOME

想定読者:シンガポール、日本、韓国、香港、米国東部、米国西部などでリモート Mac 上の CI を運用しつつ、主 Git、Docker レジストリ、成果物ストアが別大陸にあるチーム。夜間ジョブが git fetch、レイヤ pull、成果物ダウンロードで停滞しがちです。成果:トポロジの意思決定は成果物近接マトリクスに任せ、トポロジが凍結している間は本 Runbook でタイムアウト、低速打ち切り、指数バックオフ、同時実行上限をテンプレートに焼き込みます。構成:典型的な誤読、地域間リンクの対照表、Git/Docker の調整項目、六段階手順、KPI、締めの運用指針です。

CPU は十分速いのに、なぜ CI は遅いのか

Apple Silicon はコンパイルの上限を押し上げますが、パイプライン時間はしばしば大洋横断の転送の繰り返しに頭打ちになります。同じワークフローはノート PC では一瞬でも、Git のホームリージョンとずれたランナーでは長時間の尾部に化けます。運用で繰り返される誤読を六つ挙げます。

  1. Git HTTP の既定タイムアウトを盲信する:RTT と損失により長時間ハングし、GIT_HTTP_LOW_SPEED_LIMIT / GIT_HTTP_LOW_SPEED_TIME が無いと失敗が無関係なステップに見え、トリアージを誤ります。
  2. 浅い/部分クローン方針を省略する:履歴と LFS が同じエグレス予算を奪い合い、マトリクス並列が git プロセスと TLS・DNS に負荷を掛けます。
  3. Docker pull の同時実行と重複排除を無視する:共有キャッシュホストで「ランダムな」429 や TLS リセットが出るのは、多くの場合破損イメージではなくバックオフ不足です。
  4. 「一度ビルドし成果物を昇格」を飛ばす:リージョンごとに再ビルドし、再開可能なアップロードが無いと、コンパイルが繰り返しの地域横断移動になります。
  5. ネットワーク尾部をディスクや Xcode 問題と誤ラベルする:ディスクと CPU が遊んでいるのに fetch/pull の再試行がログに出るなら、M4 Pro や 2TB へ拡張する前にリンク対照表へ戻ります。
  6. Pods/SPM の問題を Git/レジストリ問題に畳み込む:リゾルバの遅さは同居し得ますがログの指紋は異なります。CocoaPods と SwiftPM のミラーガイドとセットで読んでください。

セルフホストランナーのチェックリストを重ねます。ランナーはジョブをマシンに割り当てますが、pull が統計的に成功するかは本 Runbook と近接マトリクスが決めます。三つを同一マイルストーンでレビューしてください。

表 1:Git・レジストリ・ビルダーのリージョンが食い違うときの四つの問い

アーキテクチャ資料と併せて、マルチリージョンのレンタルガイドと同じレビュー表に載せてください。左に事実、右に今週の優先アクションを書きます。

シグナル典型的な症状まずやること(今週)ハードウェアの見方
ビルダーは APAC、主 Git は米国東部clone/fetch の P95 が高い、夜間に束ねて失敗浅い/単一ブランチクローン、低速閾値の引き上げ、並列 git の上限、読取ミラーの検討CPU より先にネットワーク。リンク修正後も尾部が残るなら M4→Pro を検討
プライベートレジストリが大陸をまたぐレイヤのタイムアウト、間欠的 5xx、pull 再試行の山Pull-through キャッシュ、マトリクスの収縮、ジッター付き再試行キャッシュ用ディスクを 1TB/2TB のアラートに結び付ける
成果物が別リージョンに扇状に広がるアップロードは通るが検証が遅い、重複ビルド単一ビルド+チャンク付きチェックサム、主ビルドリージョンを文書化ピーク期間はデータのホームに揃え、最安リージョンだけに合わせない
企業の出口プロキシ中間者証明書、SNI や HTTP/2 の癖git と containerd/docker 用に許可リストを分離、TLS フィンガープリントを比較SSH/VNC のアクセス方針とあわせてレビュー

表 2:YAML に貼れる Git と Docker のつまみ(RTT で調整)

監査に耐える出発点です。プレースホルダは自社の mtr、レジストリログ、パイプラインのパーセンタイルで置き換えてください。

コンポーネント主なつまみ例/意味失敗の指紋
Git (HTTP/S)GIT_HTTP_LOW_SPEED_LIMITGIT_HTTP_LOW_SPEED_TIME遅すぎる転送を打ち切る長い沈黙のあと突然失敗。マトリクス負荷下で悪化
Git の深さ--depth--single-branchCI の HEAD 向けにオブジェクト転送を縮小並列クローンがエグレスを飽和
Docker / BuildKitレジストリミラー、max-concurrent-downloads、ビルド並列キャッシュ層で同時レイヤ pull を上限化429、TLS リセット、レジストリへの集中嵐
オーケストレータのバックオフ再試行、基底遅延、上限、ジッター同期した再試行のスタンピードを防ぐ分単位で揃った大量失敗
bash
# Git: avoid cross-region hangs (tune per link; set in CI env)
export GIT_HTTP_LOW_SPEED_LIMIT=1000
export GIT_HTTP_LOW_SPEED_TIME=120
git fetch --depth=1 origin "+refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH}"

# Docker: example daemon concurrency (platform-specific; align with ops)
# "max-concurrent-downloads": 3,
# "registry-mirrors": ["https://your-pull-through.example"]

# Orchestrator sketch: jittered backoff
# sleep = min(cap, base * 2**attempt) + random_jitter
info

注:フリート展開の前に単一ジョブで検証してください。同時実行の変更を一斉に入れると、散発的な問題が確実な障害に変わります。結果が近接マトリクスと矛盾する場合は、日次レートよりデータレジデンシーを優先してください。

六段階:地域横断の pull を監査可能なテンプレに落とす

前提:ランナーラベルとシークレットはランナーガイドどおり分離されています。.git 資格情報とキャッシュパスを場当たりで共有しているなら、先にそこを直してください。

  1. 主リンクマップを描く:既定の Git リモート、主レジストリ、成果物バケット、ビルダーリージョンを書き、ダッシュボードに「ビルダーリージョン == データホーム」という真偽値を載せます。
  2. pull 方針を凍結する:浅い深さ、git fetch --unshallow の可否、単一ブランチ強制。CI で暗黙の全履歴を禁止します。
  3. fetch と pull で SLO を分ける:P50/P95 と失敗クラス(タイムアウト、5xx、TLS、429)を、Git ログとランタイムログで分けて追跡します。
  4. バックオフと同時実行の上限を足す:オーケストレータの再試行にはジッターが必要です。Docker の同時実行はジョブ並列と一緒に伸ばさず、スタンピードを避けます。
  5. キャッシュを契約する:pull-through の所有者、クリーンアップ、ディスク閾値を運用手順に書き、1TB/2TB のレビューに結び付けます。
  6. 二週間レビュー:尾部が残るなら、無制限の再試行ではなくリージョン移動やミラーを起票します。

週次レビューとアラート向け KPI 三つ

ダッシュボードのタイトルはそのまま使ってください。

  1. Git fetch/clone の P95 と低速打ち切り件数:並列マトリクス幅の横にプロットします。CPU が遊んでいるのに P95 だけ上がるのはリンク事故のサインです。
  2. イメージ pull の再試行率と 429 の割合:同時 pull ジョブと相関させます。同時スパイクなら、ホストを増やす前に同時実行を下げます。
  3. 地域横断の成果物バイト数と重複ビルド数:「どこでもビルド」のコストを帯域とエンジニア時間で数値化します。

方向性の文脈(ベンチマークではありません):2025〜2026 年型の負荷では、冷たい大洋横断の pull と幅広いマトリクスが尾部を十分単位に伸ばすことがあります。データホームを揃えバックオフを入れる方が、P95 改善では CPU アップグレードに勝つことが多いです。

アドホック短期レンタルと手書きスクリプトでは、なぜエンタープライズのチェーン安定が難しいか

個人用スクリプトには監査証跡がありません。リージョンが変わるたびにタイムアウトとキャッシュが無効化されます。契約レベルの Apple Silicon CI には、ベアメタル分離、マルチリージョン選択、ベースとピークの期間の組み合わせ、そして Git/レジストリ方針を同じページに載せる必要があります。

データホームと揃ったエグレスのない断片化プロバイダは、チームを再試行の嵐に閉じ込めがちです。再現可能な pull 経路、リージョン横の水平拡張、本番に近い CI のシークレットモデルが必要なチームにとって、専用のマルチリージョン Mac クラウドの方が、短期ホストを回転させるより静かな運用になりやすいです。MACCOMEはシンガポール、日本、韓国、香港、米国東部、米国西部でMac mini M4 / M4 Proのベアメタルノードを柔軟な条件で提供しています。リポジトリとレジストリのある場所にビルダーを置き、公開料金と各地域ページ、マルチリージョンガイドとランナーガイドで最終調整してください。

パイロット:データホームと同じリージョンに短期レンタルしたビルダーで本稿の二週間レビューを回し、そのうえで月次/四半期や 2TB 拡張を決めます。「安いリージョン、高いリンク」という長期請求を避けてください。

FAQ

成果物近接マトリクスとどう組み合わせますか?

マトリクスはチェーンをどこに置くかを選びます。本 Runbook は移行中や凍結期間に CI を生かします。レンタル料金マルチリージョンガイドを開き、両方の資料を同じ変更チケットに添付してください。

先に同時実行を下げますか、リージョンを移しますか?

ダッシュボードに 429、TLS リセット、同期した再試行が出るなら、同時実行を下げジッターを足します。P95 が高いままデータを動かせるならリージョン移動を計画します。詳細はヘルプセンターをご覧ください。

CocoaPods/SPM の記事との境界は?

あちらはリゾルバのソースと trunk/CDN 経路を固定します。本稿は Git リモートとコンテナレイヤを固定します。ログに pod installgit fetch の尾部が両方出るなら指標を分割し、一つのチェーンだけ最適化しないでください。