AI オートメーション 2026年5月15日

2026 年 MacLogin クラウド Mac における OpenClaw ゲートウェイ Node ヒープ、launchd SoftResourceLimits、OOM 復旧

MacLogin AI オートメーションチーム 2026年5月15日 約 16 分で読了

launchd 配下で OpenClaw ゲートウェイを動かす長寿命 Node プロセスは、オートスケール前提を上回る速度で RSS が伸びると、チャットピーク前に OOM 終了へ落ち込みます。 本 2026 年 5 月の運用手順書では、誰が最初に上限を決めるか、取るべき RSS/ファイル記述子ベースライン、症状を launchd SoftResourceLimitsNODE_OPTIONS ヒープ上限 に写像する方法、香港・日本・韓国・シンガポール・米国の MacLogin リージョンで橋を維持する9 段階ロールアウトを整理します。

本文には5 列のリソースマトリクス(旧来の 3 列露出表とは別物)、そのまま貼れる検証コマンド、JSON-LD と整合するFAQがあります。併読として ゲートウェイ Prometheus 指標doctor 診断ヘッドレス onboard + install-daemon を推奨します。運用方針は ヘルプ、都市単位のゲートウェイ分割は 料金ページ とセットで検討してください。

プロバイダ上限に触れる前に Node ヒープを決めるのは誰か

ヒープはプラットフォームエンジニアの管轄です。V8 GC はツール実行、Webhook バッファ、プラグインサンドボックスに残ったオブジェクトすべてに反応します。組織がすでに人間用ブレイクグラス SSH自動化アカウント を分けているなら、観測も同じ境界で:プロセスに MacLogin のリース ID を付け、東京のスパイクがシンガポール基線をかき消さないようにします。

プロンプト設計者が大きなコンテキストを求めても、plist と容量モデルの両方を更新するマージリクエストなしに RSS 上限だけを変えるのは危険です。ヒープ増はストレージ増と同列で、グラフ・ロールバック担当・月額インパクトを添えます。メトリクス用 sidecar や TLS を載せると、大きいヒープはより上位の MacLogin プランを意味しがちです。

複数事業部が 1 台の mini を共有するパイロットでは、「ゲートウェイ容量評議会」の定例を一枚にまとめ、FinOps/セキュリティ/ML プラットフォームが同じ数字を聞くようにしてください。さもないと「週末は無制限ヒープ」と「月曜にタイムスタンプ無しの 12GB RSS スクショ」で振れ幅が爆発します。

  • SREai.openclaw.gateway LaunchAgent を維持するケース。
  • FinOps が 1 台の mini に3 本のモデルストリームが乗る理由を問うケース。
  • セキュリティアーキテクト が、監査サンプルをすり抜ける遅いリークではなく決定的なクラッシュを求めるケース。

痛みのシグナル:RSS の段階上昇、EMFILE、チャット側サイレントリトライ

ユーザーは「V8 old space ギリギリ」とは書きません。遅いツール応答、Slack リアクションの重複、「朝会中にゲートウェイが 2 回再起動」などと報告します。背後では旧記事の クラッシュループ対策 由来のウォッチドッグ再起動かもしれませんが、本文は CPU が低いまま RSS が 6〜12 時間単調増加する漸進的メモリ圧に焦点を当てます。

EMFILE 急増は別物で、Webhook 扇出や閉じないロングポーリングと同時発生しがちです。セキュリティ承認なしの本番 pcap は避けつつ、毎分の accept/close 数 を RSS と同じダッシュボードに載せ、記述子リークをヒープリークと誤認して一週間無駄にしないでください。

SDK が指数バックオフで数分遅延し、プロセスは生きているのに GC が詰まっているとチャット側はサイレントに見えます。リージョン別のクライアント遅延ヒストグラムを用意し、香港オペレーターが「世界中 Slack が遅い」と誤認しないようにしてください。実際は東京の 1 台が old space 回収を飢えさせているだけ、というケースが多いです。

警告: アラート無しの硬い RSS 上限は失敗を早めるだけです。米国本番で launchd の天井を締める前に Grafana(または同等)を必ず出荷してください。

調整前に 48 時間取るべきベースライン

plist を触る前に、60 秒ごとの RSS サンプル開いているファイル記述子数、sidecar が出せるならイベントループ利用率を保管します。SOC2 志向なら最低 180 日保持し、--max-old-space-size を広げた週を監査が再生できるようにします。MacLogin mini では ループバック束縛 に沿ってスクレイパーを同居させ、Prometheus 自体が新しい横展開リスクにならないようにします。

対話チャット、夜間バッチ、「ビッグバン」手動取り込みのように負荷タイプを分けます。昼間だけ測ると、巨大 JSON をディスクではなくメモリに一気展開する深夜サマリーで RSS が跳ねるのを見逃します。

swap を使いたくなくても pageout カウンタは取ってください。RSS が平らでも pageout が増えるなら、ヒープを絞るよりティア昇格が正解です。

設計レビューで引用する数値:ゲートウェイ HTTP は TCP 18789、管理 SSH は TCP 22、Node はまず 22 LTS と文書化し、どのトランスポートがどの爆半径かを揃えます。

5 列マトリクス:シグナル/原因/最初のつまみ/plist フィールド/検証

ダッシュボードのシグナル 最も疑うランタイム原因 最初に触る設定 launchd / plist 側 検証コマンドやプローブ
QPS が平らなのに RSS が毎時 40〜80MB 増える ストリーム完了後のバッファ残留 NODE_OPTIONS=--max-old-space-size=4096(例) EnvironmentVariables プロセスサンプル + 再起動後 openclaw doctor
バースト直後に突然終了 ファイル記述子枯渇 ゲートウェイ設定の Webhook 扇出を下げる SoftResourceLimits FileDescriptor soft = 10240(例) lsof -nP -p <pid> | wc -l
CPU は張り付くが RSS は平ら CPU クォータが厳しい/ヒープ不足で GC が空回り CPU を広げる前にヒープを少しだけ増やす SoftResourceLimits 内の CPU soft 秒 sample gateway_pid 5 1(Instruments 等)
ドレイン時だけヘルスがフラップ シャットダウン経路がソケットを遅く閉じる グレースフルシャットダウン を最低 90 秒確保 ウォッチドッグ側の ThrottleInterval localhost から curl -fsS http://127.0.0.1:18789/healthz

フリートガバナンス:他リージョンの plist を写すと壊れる理由

ソウルの SoftResourceLimits を再ベースライン無しで米国本番へ貼ると、誤検知が最速で増えます。米国チャットは添付が重くツールログも長く、韓国で一度も鳴らなかった記述子ソフト上限がカリフォルニアで毎時間鳴ることがあります。

plist リポジトリ名に リージョン + リースティア + ゲートウェイ major を含めます。OpenClaw の major アップグレード後は必ず 48 時間計測をやり直してください。自前コードが変わらなくてもプラグインサンドボックスと既定ストリームが変わります。

人事情報ともリンクさせます。契約終了で去る請負者だけが 4096 MiB の魔法数字を知っているのは避け、plist コメントにインシデント番号を残し、測定値由来かカンファレンス demo の仮値かを次のオンコールが判別できるようにします。

9 段階ロールアウト:測定から守られた本番へ

  1. 週末ウィンドウではプラグイン自動更新を凍結し、RSS 変化をトラフィックと相関(自動更新記事)。
  2. 状態ディレクトリ 手順に沿って ~/.openclaw tarball をスナップショット
  3. ソウル lab mini で合成負荷を再生しながら新 NODE_OPTIONSステージング
  4. RSS より先に記述子へ SoftResourceLimits を適用——EMFILE は急峻で検知しやすい。
  5. ステージングが 24 時間無事故なら香港本番へ昇格
  6. シンガポールと米国へ数値を地域化してミラー、整数の丸写しは禁止。
  7. 5/11 メトリクス記事と同じ Grafana に配線し、RSS 微分も見せる。
  8. ロールバックを文書化:旧 plist revision を git に。
  9. 計画再起動時の「gateway warming」バナーをチャット運用が読めるよう教育

Node メモリ挙動と絡む launchd キー

EnvironmentVariablesNODE_OPTIONS を置くのが堅牢です。SoftResourceLimits はカーネルへ早めにシグナルします。4/29 記事の ThrottleInterval と併用し、激しい再起動がリークを隠さないようにします。

SSH で plist を触るなら原子更新:一時ファイルへコピー、plutil -lint、移動後に launchctl bootout/bootstrap。接続断で XML が半端になると launchd がサービス丸ごと拒否し、監視が鳴くまで無音の穴が空きます。

ラボで 1 mini に複数ゲートウェイを載せるなら Label をチーム単位で名前空間化し、事故時の launchctl print を読めるようにします。

Unified Log とユーザー体感の突合

macOS は「JavaScript heap out of memory」をゲートウェイ stdout と同じファイルに出さないことがあります。ゲートウェイ JSONL と並行してサブシステム述語を取り、MacLogin のリースメタ(リージョン + 資産タグ)を付けて事後分析で日本だけの尖りか全体かを判断します。

VNC で画面共有するオペレーターには GUI 分のメモリを説明し、社内方針に従いアイドル Screen Sharing を切ってから調査してください。

ストリーミング完了とプロバイダバッチ:隠れたヒープ消費

再生用に長いツールログを抱えると old space に同系文字列が複製されます。プロダクトが保持を要求するなら 4/28 ログローテ記事に沿って圧縮 JSONL へ退避し、プロセス内キャッシュを無限成長させないでください。

レート制限バックオフ も再確認——ブラウンアウト中の重複 inflight がバッファを倍加させます。

FAQ

ヒープを下げると GC は速くなる? 小さい old generation で速く回ることもありますが、多くの場合は GC 回数だけ増え CPU を浪費します。p95 ツール遅延、p99 Webhook ACK、CPU 飽和を必ずセットで見てください。RSS が下がって遅延が悪化したら週末前に戻します。

日本と米国で同じ plist 数値を共有してよい? 骨格(キー名、コメント、ThrottleInterval 順)は共有してよいですが、少なくとも一営業週は RSS ヒストグラムが重なるまで数値は分けます。タイムゾーンで静かな時間帯が違い、米国深夜メンテを東京ダッシュボードが攻撃と誤認しがちです。

doctor が緑なのに RSS が伸びる? doctor は形を検証し長期ドリフトは見ません。RSS 微分アラート、ゲートウェイが出す heapUsed、プラグイン差分を突き合わせ npm 版まで二分します。

クラウド Mac の swap とは? Apple Silicon でも争奪があれば冷ページを退避し、swap は RSS 崖を遅延爆発まで隠します。VNC オペレーターが GPU 近傍メモリを食うときほど、「swap に任せる」より明示 RSS + アラートを選びます。

メモリ意識の OpenClaw ゲートウェイに Mac mini M4 が合う理由

M4 の統合メモリはゲートウェイ、TLS sidecar、観測エージェント同居時のコピー削減に効き、意図的に RSS を絞る場面ほど重要です。MacLogin の HK/JP/KR/SG/US で最も重いツールを叩くチャット制御面の横にメモリ調整済みゲートウェイを置けば、大洋横断レイテンシを口実にヒープを膨らませる誘惑を減らせます。

効率の余力は Xcode デバッグにも効き、GUI 専用ツール経路のリークをノート PC に丸ごと戻さず再現できます。ローカルで再現できないからといって一時間だけ上限解除、という動きはガバナンスを壊します。

レンタルなら実験は可逆:状態をスナップショットし、上限を締め、一週間観察し、必要なら 料金ページ で上位ティアへ。パイロット後に処分する裸金属の稟議に縛られません。

本番移行時は本記事、Prometheus 記事、VNC ガイド を社内 wiki に集約し、CLI だけでは腹落ちしないメモリを視覚的に追えるようにしてください。

次の OOM 週末前にゲートウェイを適正サイズへ

HK / JP / KR / SG / US で Apple Silicon を借り、Prometheus sidecar、plist の git 履歴、doctor アーカイブに余裕を。