共有メモリ、メモリ ピーク、機能ホワイトリスト、症状ツリーと 6 ステップのランブック
Docker 上の OpenClaw は最初のスモーク テストに合格することがよくあります。チャネルが応答すると、openclaw ドクター は問題ないようです。これは、コントロール プレーンとモデル パスがほぼ正常であることを証明するだけです。ページ駆動スキル、スクリーンショット、 またはヘッドレスのChromiumを有効にするとすぐに、ワークロードはメモリが大量に発生し、共有メモリが大量に使用されるブラウザのレンダリング スタックに移行します。VPS では、障害モードが丁寧なログ行になることはほとんどありません。断続的な空白ページ、ランダムなタブのクラッシュ、または低速モデルまたはアンチボット ページと誤読される突然のOOM 終了が表示されます。このプレイブックでは、shm_size と mem_limit の症状とパラメーターのマトリックスを提供し、その後、変更を二等分に保つ6 ステップのランブックを提供します。Exit 137 VPS 入門書およびCompose 運用ベースラインと組み合わせることで、ネットワーキング、WASM ウォームアップ、ブラウザのピークがデバッグされなくなります。一つのもつれた事件。
多くのチームは、メッセージが流れ、ドクターがグリーンであることを証明することで、VPS 上の OpenClaw を検証します。これはブラウザクラスのスキルにとって必要ではありますが、十分ではありません。ヘッドレス Chromium は、大規模な匿名マッピングと合成バッファーを作成します。これらが Docker のデフォルトの 64MB /dev/shm または積極的な cgroup メモリ上限と衝突すると、その症状は多くの場合、即座に Exit 137 ではなく空白の UI、タブのクラッシュ、 スクリーンショットのタイムアウトになります。その後、インシデントはモデルのレイテンシ、サイトのボット対策ルール、またはチャネルの再試行に誤って転送されます。運用エンジニアは、実際の制約が共有メモリとレンダラー スタックからのピーク RSS である場合、モデルのタイムアウトの調整に時間を無駄にします。
負荷テストと誤解される単一ページの成功: マーケティング ホームページの読み込みは、複数ステップのログイン、長いスクロールのキャプチャ、または同時タブのようなストレスではありません。本番環境のトラフィックは、警告なしにメモリと Shm プレッシャーを急増させます。
/dev/shm とホスト メモリ間の結合を無視する: Chromium は大きな共有メモリ セグメントを好みます。docker stats の RSS は控えめに見えますが、dmesg にはすでに cgroup スロットリングまたは oom-kill イベントが表示されています。
幅広いコピー&ペースト機能: サンドボックスの摩擦をバイパスするための SYS_ADMIN の追加により、ブラウザのバグからホストの侵害まで影響範囲が拡大します。査読者は書面による脅威とのトレードオフを必要とします。
これをリバース プロキシおよび allowedOrigins インシデントと混合する: 非ループバック コントロール UI エラーと WebSocket ドロップは、Compose ネットワーク Runbook に属します。1 つの変更ウィンドウ内で無関係な障害ツリーを三角分割しないでください。
高負荷のブラウザ ジョブをチャットの多いチャネルと同じインスタンスに積み重ねる: 夜間のバッチ自動化により、ピークと分離プロファイルを計画しない限り、日中の ping 中に安定しているように見えたプロファイルが崩れる可能性があります。
5 つの税金を明示的な禁止パターンと必須の浸漬テストとしてエンコードします。変更リクエストの最初のページにそれらを印刷すると、誰も黙ってデモ パスを作成するために権限を拡大することがなくなります。次のセクションでは、症状にパラメータのインデックスを付けることで、オンコール エンジニアが上流のドキュメントをすべて読み直さずに止血できるようにします。
インシデントはユーザーが目に見える痛みとして現れるため、以下の表はパラメータ名ではなく、最初に観察した内容によってインデックスが付けられています。変更を加えるたびに、Docker 統計 のピークと短いゲートウェイ ログ スライスをキャプチャします。ロールバックが正直に行われるように、実験ごとにノブを 1 つだけ変更します。
| 見える症状 | 先に確認 | 典型原因と打ち手 |
|---|---|---|
| 断続的な白い画面、Aw Snap、タブのクラッシュ | shm_size、/dev/shm の使用率 | デフォルトの 64MB は、多くの場合小さすぎます。512m を試してから、1g を試して、同時ページの制限を行います。 |
| プロセスが消える、Exit 137 | mem_limit、ホスト スワップ、oom_kill カウンター | ブラウザのピークとノード常駐セットが cgroup を超えました。ステップまたはインスタンスを分割して制限を引き上げます。Exit 137 の入門を参照してください。 |
| 即時許可またはデバイスエラー | cap_add、デバイス、seccomp プロファイル | 公式の構成スニペットとの差分。特権的なキャップの袋ではなく、最小限の表面を追加します。 |
| CPU は固定されているがナビゲーションが停止する | ソフトウェアレンダリングフラグ、スキルの無限ナビゲーション再試行 | 制限された再試行とタイムアウト。スキルがループ内でホットリロードされていないことを確認します。 |
| 特定のサイトだけが失敗する | TLS フィンガープリンティング、HTTP/2、リージョン エグレス | シグナルが cgroup ではなくネットワークを指している場合は、shm 微調整を積み重ねるのではなく、出力テストにピボットします。 |
ブラウザ クラスのスキルの安定性は、主に 3 つの監査可能な事実です。ピーク メモリ、共有メモリ、および機能の許可リストです。それ以外はすべて二次チューニングです。
2026 年のコミュニティの記事と公式の Docker ガイダンスでは、ブラウザ自動化を組み込むスタックに対して明示的な shm_size (通常は 512MB ~ 1GB の帯域) と明確なメモリ上限を組み合わせることが推奨されています。ベンダーのマジック ナンバーを暗記する必要はありませんが、 チームの語彙にデフォルトだけでは十分ではないというフレーズと、スキルがダッシュボードを収集したり証拠パックをキャプチャしたりする場合の夜間のバッチ ウィンドウ用の別のキャパシティ項目が必要です。
以下のシーケンスは、Compose 運用ベースラインと一致します: 観察、1 つの変数の変更、ソーク テスト、アーカイブ。チャットで変更内容を説明する代わりに、出力をチケットに貼り付けます。
画像参照を固定します: ブラウザのパラメータに触れる前に、ダイジェストまたは不変のタグをメモします。ピークのデバッグ中に :latest でのプロダクションのドリフトを回避します。
ベースラインをキャプチャ: 同じスキルを 3 回実行します。docker stats のピーク、コンテナ内の df -h /dev/shm、およびゲートウェイのログ ウィンドウを記録します。
shm のみを変更します: shm_size を 512m または 1g に増やし、他のすべてを固定したままにして、同じスキルを 3 回再実行します。
次に、mem_limit を調整します。 Exit 137 または oom_kill が続く場合は、mem_limit を約 25 パーセントのステップで上げ、ホストでスワップが無効になっているかどうかを確認します。
機能を最小限に抑える: 公式スニペットで特定の cap_add またはデバイス ノードが必要な場合は、修正した正確なエラーを文書化します。脅威モデルが明示的でない限り、SYS_ADMIN は避けてください。
アーカイブ ロールバック ポイント: 渡された構成フラグメントとダイジェストをコミットします。ロールバックは、compose down && compose up -d ブロックのコピー&ペーストとして保持します。
services:
openclaw:
image: ghcr.io/openclaw/openclaw:<pin-a-digest-not-latest>
shm_size: "1g"
mem_limit: "4g"
# keep control plane on 127.0.0.1; terminate TLS at the reverse proxy
# align json-file rotation and healthcheck start_period with the baseline article
ヒント: 同じホスト上で 2 番目に重いブラウザ スタックが必要な場合は、この Runbook を複製する前に、ポートとボリュームのマルチインスタンス分離をお読みください。
このセクションでは、設定またはモニタリングで指摘できる事実のみをリストします。ブラウザが不安定に感じられるなどの雰囲気はリストしません。数値を開始バンドとして扱い、自分のスキルで検証してください。
shm_size を mem_limit と同等として扱います。512MB から開始し、長時間のキャプチャを検証してから、1GB 階層を検討します。これは、2026 コミュニティのドキュメントで一般的です。healthcheck start_period が短すぎる場合、ウォームアップ中に Compose が再起動され、ランダムに不安定になるように見えます。フィールドをベースライン記事と合わせます。警告: 同じ変更でリバース プロキシ証明書、モデル キー、ブラウザ リソースの上限をローテーションしないでください。3 回の移動により、ロールバックが二等分できなくなります。TLS パスは、リバース プロキシ ガイドに記載されています。
日中のトラフィックが安定したら、組織的な質問をしてください。この同じインスタンスで負荷の高いブラウザ バッチを夜間に実行してもよいでしょうか。停止後の応答にはコストがかかります。
| パターン | 適する場面 | 主なリスク |
|---|---|---|
| 単一の混合インスタンス | 長時間のキャプチャを必要としない個人パイロットと簡単なスキル | ピークの積み重ねは目に見えません。1 つの OOM がチャネルとツールをまとめて停止します。 |
| 専用ブラウザプロファイル | 分割ボリュームを備えた 1 台のマシン上の 2 つの構成スタック | 厳密な隔離チェックリストが必要です。マルチインスタンスの記事を参照してください。 |
| 24時間365日の専用ノード | 予測可能な SLA が必要なチーム制作 | コストは高くなりますが、承認能力と監査可能な変更履歴が得られます。 |
アドホック VPS チューニングは初期段階では柔軟ですが、本番環境の OpenClaw には、非公式スタックに欠けていることが多い 3 つのアーティファクト (予約された容量、ピン留めされたイメージ、チケット発行された変更) が必要です。スキルが iOS ビルド、デスクトップのハンドオフ、常時稼働のエージェントと共存する必要がある場合、ブラウザのピークを予測可能な 24 時間年中無休のフットプリントに移動することは、無限のパラメーターのもぐらたたきよりも優れています。運用が明確でリージョンに安定した専用の Mac 容量を必要とするチームの場合、通常は VpsMesh Mac Mini クラウド レンタルが最適です。Mac Mesh コラボレーションのストーリーに沿って、ブラウザのバーストとディスクに対するヘッドルームが容易になります。料金とヘルプセンターをご覧ください。
Chromium スタイルのレンダラーは、大きなバッファーの共有メモリに依存します。/dev/shm が小さい場合、CPU はまだ正常に見えても、断続的に白い画面が表示されたり、タブがクラッシュしたりすることがあります。まず shm_size を 512m または 1g に上げてから、Exit 137 入門書でメモリ行をクロスチェックします。
いつもではありません。最小限の権限で公式のスニペット作成から開始します。特権の上限を追加する必要がある場合は、脅威のトレードオフを文書化してください。チャネル強化のリファレンスは、本番環境強化チェックリストに記載されています。
共有ゲートウェイは、ブラウザーのピーク時にリソースの競合を増幅させます。shm 行とメモリ行をチーム リソース テーブルに追加し、マルチ API キー コンパートメント Runbook と合わせて確認します。