2026年 OpenClaw Gateway 7×24 切断とデーモン/launchd トラブルシュート:install-daemon、launchd と openclaw health の再現手順
ZoneMac や自前 Mac mini で OpenClaw Gateway を回しているチームが陥りやすいのは「日中は動くが深夜に沈黙」です。本稿では openclaw health で一次切り分けし、launchd の終了理由を突き止め、install-daemon と plist 調整で 7×24 を取り戻す再現フローをまとめます。症状対照表・7 ステップ・コピペ可能なパラメータ付きです。
1. 誰が Gateway のフラップに悩むか
典型的には、長寿命の外向き接続と複数ツール連携を launchd に任せる無人自動化チームです。対話シェルでは nvm や PATH が効く一方、LaunchAgent は plist の EnvironmentVariables だけを継ぐため、「SSH では動くがデーモンだけ失敗」や、ThrottleInterval のバックオフで夜間だけ沈黙、といった症状が出ます。
本稿の結論は、問題を三層に分けることです。(1)ヘルスチェックの誤検知、(2)launchd の再起動ストーム、(3)アップグレード由来の古い/重複 plist。openclaw health と launchctl print で突き合わせれば、多くの間欠切断は単一ホスト上で再現でき、一つのメンテ窓で平坦化できます。
以下では番号付きの痛点、対照表、7 ステップの手順を掲載します。物理ノードでの 24/7 エージェント全体像は 2026年 OpenClaw 全球デプロイ比較ガイド:どこに構築するのが最も効率的か? も参照してください。
2. よくある根本原因(3 つ)
- launchd と対話シェルの環境差: 手動の
openclaw gatewayは nvm/fnm/カスタム PATH を拾いますが、LaunchAgent は plist のみ。断続的なcommand not foundやローカルモデルパス欠落が起きます。 - クラッシュとスロットル(ThrottleInterval): 上流 429、証明書ローテ、ポート競合でゲートウェイが即終了すると、launchd が秒単位で再起動しバックオフに入り、外からは「無言の数分」に見えます。LastExitStatus がないと純粋なネット障害と誤認しがちです。
- readiness でないヘルスチェック: 「プロセス生存」だけを見たり間隔が短すぎると、GC や DNS キャッシュの揺らぎで誤再起動が増え、ThrottleInterval 問題を増幅します。価格巡回など定期負荷と重なると負荷が読めません。 2026年コスト避坑ガイド:なぜ単一拠点でのリモートMac配備がグローバルチームの生産性を15%低下させるのか? で述べるように、単一リージョンに処理を寄せると遅延とスパイクが重なりやすく、Gateway の観測も曖昧になります。
3. 意思決定マトリクス:症状 → 証跡 → アクション
ユーザーから見える事象と、最初に取るべきコマンドを一枚にまとめ、ログを漫然と追わないようにします。
| 外部から見える症状 | 先に集める証跡 | 推奨アクション |
|---|---|---|
| 断続的 502/接続リセット | openclaw health、待受ポート、ゲートウェイログの時刻 |
プロセス終了と上流タイムアウトを切り分け、読み取りタイムアウトやリトライバックオフを調整 |
| 無人時だけ失敗、SSH 手動起動は成功 | ProgramArguments、WorkingDirectory、plist 内の環境変数 | openclaw install-daemon でサポート対象テンプレートに揃える |
| 一定間隔で数分「沈黙」 | launchctl print gui/$UID → ThrottleInterval、LastExitStatus |
根本原因を直したうえで ThrottleInterval を広げる/クラッシュ率を下げる |
| OpenClaw アップグレード直後だけ不安定 | 古い Label、変わったバイナリパス、重複 LaunchAgent | 旧ジョブを削除し install-daemon で再配置、bootstrap をクリーンに |
4. 再現可能なトラブルシュート 7 ステップ
- ベースライン: 正常時に
openclaw health --json(対応ビルドなら)で待受 URL、バージョン、依存チェックをスナップショット化します。 - 再現ウィンドウ:
log stream --predicate 'process == "launchd"'や、ラベルで絞った Console を、インシデント前後 ±5 分に集中して読みます。 - launchd の状態:
launchctl print gui/$(id -u)/com.openclaw.gateway(実際の Label に置換)で LastExitStatus、実行回数、state を記録します。 - デーモン再インストール: メンテ窓で
openclaw install-daemonのあと、旧エントリをlaunchctl bootoutし、新 plist をlaunchctl bootstrapして二重起動を避けます。 - パラメータ:
ThrottleInterval(多くの場合 ≥10s)、KeepAlive、ExitTimeOut(初期値の目安 20s)で、SIGTERM 後のコネクション枯渇を許容します。 - ヘルスプローブ: 外部オーケストレーションは
openclaw healthを 30〜60 秒間隔で。連続 3 回失敗でアラートにするとジッターを抑えられます。 - 受け入れ: 24 時間の health 曲線と launchd の実行回数を保持し、階段状に増えたらステップ 3 に戻って終了コードを比較します。
5. 引用しやすいパラメータとチェックリスト
- ExitTimeOut 20s: SIGTERM 後のドレイン時間を確保。短すぎると launchd が SIGKILL し、非ゼロ終了が増えます。
- ヘルスポーリング 30〜60s: FAQ の目安どおり、誤検知と検知遅延のバランス。内部メトリクスは 15s でも、再起動ポリシーまで同粒度にしなくて構いません。
- ThrottleInterval ≥10s: 根本原因修正までの暫定で再起動ストームを抑えます。上流レート制限や証明書監視とセットで使い、バックオフだけに頼らないでください。
6. なぜ Mac mini は Gateway に向くか
ゲートウェイ負荷が嫌うのは、熱・電源由来の再起動と、仮想化層が足すスケジューリングのジッターです。Apple Silicon の Mac mini はアイドル時おおよそ 4W 前後と低く、常時デーモン向きです。macOS と Silicon が一体なので、launchd・ネットワークスタック・TLS の挙動をランブックに落としやすくなります。
マルチテナント VM に比べ物理ノードは「謎の遅延」が減り、上流 API への安定したエグレスを取りやすいです。Unix ツールと SSH が第一級なので、上記ステップを CI やオンコール手順にそのまま組み込めます。
静音・低消費電力・長期安定性を兼ね備えたハードで OpenClaw Gateway を載せたいなら、Mac mini M4 は有力な出発点です。ZoneMac のノードでデーモン配置と監視を一度に整え、本文の手順を本番に接続してください。
OpenClaw Gateway を物理 Mac mini で安定稼働
ZoneMac は、長時間 launchd ジョブと自動化オーケストレーション向けにマルチリージョンの Mac mini を提供しています。