三つの痛み:接続できることとスケールできることは別です
痛み1:マトリックス Job が増えると謎の切断。各ジョブが独自の SFTP/rsync over SSH を開き、MaxSessions や MaxStartups が厳しいと後続が拒否されたり転送途中で broken pipe になります。無線 LAN の不安定さと誤認されがちです。
痛み2:対話的 SFTP と自動化が同じ予算を奪う。大容量ドラッグ&ドロップとパイプラインの増分同期は同一 SSH サブシステム上で競合しますが、多くのチームは接続数と帯域を一枚の表で管理していません。
痛み3:中間装置がアイドル TCP を切断。企業出口やキャリア NAT は数分単位で無通信セッションを掃除します。ディスク停滞でアプリが「まだ生きている」ように見えても経路は既に落ちていることがあり、keepalive とチャンク検証がないとリリース枠の中で再送コストだけが膨らみます。
設定より先に転送アーキテクチャを選ぶ
直列は最小チーム向け。限定並列はアクティブ SSH を全体で 2〜4 に抑えつつキューで吸収する一般的な既定値です。キュー投入は複数リポジトリが一つの Mac を共有するときに有効です。アカウント分割は委託先や事業部単位の分離に効き、権限と監査の最小権限とも整合します。
ステージング+symlink 切替を既に採用している場合は、短いカットオーバー窓と長時間の同期窓で接続予算を分けてください。読み取り一貫性(原子リリース)と接続安定性は別ノブです。
意思決定表
レビュー会で合意形成に使い、RTT・ディスク・CPU で再測定してください。
| モデル | 向いている場合 | 主なリスク | 最小の制御面 |
|---|---|---|---|
| 直列 | 極小チーム、低頻度リリース | 待ち時間 | 手順書と任意ロック |
| 限定並列 | 少数パイプライン | sshd と CI の両方の上限調整 | sshd 上限、max-parallel、バックオフ |
| キュー | 多リポジトリ単一入口 | スケジューラ SPOF | キュー UI とリプレイ |
| 分割アカウント | 外部パートナー併用 | 鍵運用 | chroot、監査ログ、ローテーション |
五ステップ:sshd から CI 並列度へ
運用順序(下のスニペットと対応)。OpenSSH 想定で、sshd 再読み込み前後の sshd -T 出力を必ず保管します。
- sshd -T で maxsessions・maxstartups・clientalive 系を記録しアーカイブする。
- sshd_config を更新し sshd を再読み込み後、同コマンドで差分を確認する。
- CI ランナーと運用端末の ssh 設定に ServerAliveInterval/CountMax を書く。
- GitHub Actions の max-parallel を下げるか、アップロード専用キューを置く。
- アクティブ SSH 数・切断 errno・スループットを日次でログし、FW アイドル時間と照合する。
sshd -T | egrep 'maxsessions|maxstartups|clientalive'
# MaxSessions 10
# MaxStartups 10:30:100
# ClientAliveInterval 60
Host your-remote-mac
ServerAliveInterval 30
ServerAliveCountMax 6
GUI クライアントでも同等の keepalive を有効化してください。項目名は ツール選定ガイド を参照します。
数値基準
WAN 最適化がない場合、クライアント ServerAliveInterval 約30秒、サーバ ClientAliveInterval 約60秒 が多くの企業アイドルタイマーを越えやすいです。MaxSessions は 10 前後が一般的ですが、対話セッションやエージェント用に余白を残してください。CI 再試行は指数バックオフ(例:15〜30秒、その後60秒)を推奨し、切断がハンドシェイク失敗かパス誤りかをログに残します。単一オブジェクトが約 5GiB を超える場合は分割転送と検証を検討し、一貫性はステージング+symlink に寄せます。
補足指標として、ピーク時の平均同時 SFTP セッション数と時間あたりの再試行回数をダッシュボードに載せると、「サーバ不良」か「上限・ネットワーク」かを早く切り分けられます。
FAQ とマネージド リモート Mac
- 並列で切れる=サーバ故障? まず上限・NAT・keepalive を疑ってください。
- SFTP と rsync は競合? はい。SSH セッションと帯域をまとめて予算化します。
- 原子リリースとの関係? 原子リリースは読み手の一貫性、本稿は転送経路の安定性です。
まとめ:限定並列と keepalive で多くの謎切断を抑止できます。限界:私物ノートをビルド機にするとスリープや手動設定変更が蓄積します。SFTPMAC の価値:マネージド リモート Mac とディレクトリ隔離でポリシーと到達性を固定し、チームはパイプラインとゲートに集中できます。
セッション争奪を減らし、隔離されたリモート Mac で SFTP と CI を載せたい場合は SFTPMAC のプランをご確認ください。
