速度改善・安全対策

WordPressでCloudflare Error 1102が出るときの直し方|CPU・メモリ上限の確認順

Cloudflareを利用するWordPressで「Error 1102: Worker exceeded resource limits」が表示され、ページ表示、REST API、画像変換、HTML書き換えなどが途中で止まることがあります。これはWordPressのPHPメモリ不足と同じエラーではなく、前段で実行されたCloudflare Workerが資源上限を超えたときに発生します。

Error 1102の原因は、大きくCPU時間の超過とメモリ上限の超過に分かれます。ループや重い解析はCPU、巨大なHTML・画像・JSONを一括で読み込む処理はメモリを疑います。先にMetricsとLogsでどちらかを分けないと、上限だけ変えて再発する可能性があります。

いきなりWordPressのPHP設定を上げたり、Workerの上限を最大にしたりしないでください。エラーURL、時刻、Ray ID、直前デプロイを保存し、資源を使い切った処理と入力条件を特定します。

先に結論:Error 1102は8段階で確認する

  1. エラー画面、URL、時刻、Ray IDを保存する
  2. 失敗するパス・操作・入力サイズと成功例を分ける
  3. 対象URLに一致するWorkerとルートを確認する
  4. 直前デプロイ・設定・依存関係の変更を確認する
  5. MetricsのInvocation StatusでCPU超過かメモリ超過かを見る
  6. Workers LogsでCPU時間、壁時計時間、例外、入力条件を照合する
  7. 安定版へのロールバック、処理削減、分割、ストリーミングを行う
  8. 代表URLとWordPressの保存・フォーム・APIを再確認する

Invocation Statusが「Uncaught Exception」なら資源超過ではなく、Cloudflare Error 1101の例外確認手順を使います。まずエラー分類を確定することが復旧の近道です。

Cloudflare Error 1102とは?

過熱した演算炉と満杯のメモリ槽で表したWorker資源超過

Cloudflare公式のError 1102では、WorkerがCPU時間またはメモリの上限を超えた状態と説明されています。CPUではループやJSON解析などの計算、メモリでは大きな本文の保持、巨大オブジェクト、配列や文字列の蓄積が代表例です。

WorkerがWordPressの前段でHTMLを書き換える、認証する、キャッシュを制御する、外部APIをまとめるといった処理を行っていると、オリジンのWordPressが正常でも1102が返ります。WordPressへ要求が到達する前、またはオリジン応答をWorkerが加工中に止まる場合があります。

1102・1101・524・503の違い

表示主な意味最初に見る場所
Cloudflare 1102WorkerのCPU・メモリ資源超過Invocation Status、CPU・メモリ
Cloudflare 1101Workerの未処理例外exceptions、スタック、直前デプロイ
Cloudflare 524オリジン接続後の応答待ちPHP、DB、外部API、長時間処理
503 Service Unavailable一時的な処理不能・過負荷・保守発行元、Retry-After、サーバー状態

ページが長時間待ってから524になる場合は、Cloudflare 524の長時間処理を確認する手順が中心です。503なら、WordPressの503を原因別に直す手順で発行元を分けます。

CPU時間・壁時計時間・メモリの違い

指標何を測るか増えやすい処理
CPU時間WorkerコードがCPUで計算した時間ループ、解析、変換、圧縮、暗号、正規表現
壁時計時間開始から終了までの実時間fetch、KV・DB待ち、外部API、ストリーム
メモリisolateが保持するデータ量巨大本文の一括読込、配列蓄積、WASM、キャッシュ

Cloudflare公式のWorkers Limitsによると、ネットワーク要求を待つ時間はCPU時間に含まれません。2026年8月確認時点では、HTTP要求のCPU時間はFreeで10ms、Paidは既定30秒で最大5分まで設定可能、メモリは1 isolateあたり128MBです。数値は変更され得るため、設定前に必ず最新の公式表を確認してください。

「ページが10秒かかった」だけではCPUを10秒使ったとは限りません。外部API待ちが長いのか、実際の計算が重いのかをLogsのCPU timeとwall timeで分けます。

WordPressで1102が出る主な原因

1.HTML全体を何度も解析・置換している

WorkerでWordPressのHTMLを取得し、複数の正規表現、DOM相当の解析、文字列置換を繰り返すとCPUとメモリの両方を使います。長い記事だけ失敗する場合は、本文サイズと処理回数を比較します。

2.大きなResponseやRequestを一括で読み込んでいる

response.text()やrequest.arrayBuffer()で大きな本文・画像・バックアップ・API応答を全量保持すると、メモリ使用量が急増します。ファイルサイズが大きい場合は、1102の前に413 Content Too Largeが別の層から返ることもあります。

3.終了条件の弱いループや再帰がある

ページ内リンク、JSON項目、検索結果などを走査するループで、入力に比例して処理量が急増することがあります。特定件数を超えたときだけCPU超過になるなら、ループ回数、ネスト、重複計算を確認します。

4.配列や文字列へデータを追加し続けている

ログ用データ、API結果、HTML断片を配列や文字列へ蓄積し、最後にまとめて返す設計はメモリを圧迫します。全件を保持せず、必要項目だけに絞る、逐次処理する、出力をストリーム化する方法を検討します。

5.グローバル領域に大きなデータを保持している

大きな辞書、テンプレート、解析済みデータ、WASMメモリをグローバル領域へ置くと、同じisolateが複数リクエストを処理する間のメモリ負担が増えます。小さな不変データの再利用と、大量データの保持を分けて考えます。

6.依存パッケージや新機能で計算量が増えた

画像処理、圧縮、暗号化、Markdown変換、Bot判定、A/Bテストなどを追加した直後は、バンドル変更と負荷増加を確認します。本番データの大きさやアクセス集中で初めて上限に達することがあります。

変更前に保存する情報

  • 1102画面、URL、Ray ID、発生時刻、タイムゾーン
  • 失敗するパス、HTTPメソッド、操作、入力サイズ
  • 成功する最小入力と失敗する入力の違い
  • 対象Worker名、ルート、デプロイバージョン
  • 直前のコード、依存関係、Binding、設定変更
  • Invocation Status、CPU time、wall time、メモリ関連の記録
  • アクセス集中時だけか、単発でも再現するか
  • 安定版と、ロールバック時に影響する関連データ

入力データやログを共有するときは、Cookie、Authorization、APIトークン、個人情報、投稿の非公開内容を隠します。巨大な本文そのものをログへ出すと、調査用ログが新たな負荷や情報漏えいの原因になります。

MetricsとLogsでCPU・メモリを分ける

WorkerのCPU負荷とメモリ消費を調べる立体診断室

CloudflareダッシュボードでWorkers & Pagesから対象Workerを選び、MetricsのErrorsとInvocation Statusesを確認します。「Exceeded CPU Time Limits」ならCPU、「Exceeded Memory」ならメモリを優先します。「Uncaught Exception」なら1101系の例外です。

次にWorkers Logsで失敗時刻と対象パスを絞り、CPU time、wall time、outcome、例外を照合します。平均値だけでなく、失敗した要求に共通するパス、本文サイズ、パラメータ、デプロイバージョンを確認してください。

観測結果優先する調査代表的な修正
CPU timeが上限付近重い関数、ループ、解析計算削減、キャッシュ、分割
wall timeだけ長いfetch、DB、外部API待ちタイムアウト、並列化、依存先確認
Exceeded Memory本文の一括保持、配列、globalストリーム、上限、保持削減
特定パスだけ失敗ルート別処理、入力サイズ対象処理限定、早期終了
更新直後から急増新バージョンとの差分安定版、修正版、段階展開

ローカルで再現できる場合は、Cloudflare公式のCPU profilingを使い、重い関数を特定します。本番と似たURL、件数、データ量で測り、軽いサンプルだけで正常と判断しません。

CPU超過・メモリ超過を安全に直す

大きな処理を分割しストリーミングで安定化した設備

1.更新直後なら安定版へ戻して影響を止める

新デプロイ直後に1102が増え、前バージョンが正常だった場合は、安定版へのロールバックを検討します。デプロイだけが戻り、KV・D1・R2などの保存データは自動では戻らないため、データ構造とBindingの互換性を確認します。

2.CPU超過は重複計算と処理対象を減らす

ループ回数、ネスト、正規表現、JSON解析、圧縮、暗号、HTML変換をProfilerで確認します。同じ値を何度も計算しない、対象パスやContent-Typeを早い段階で除外する、計算結果を適切にキャッシュするなど、最も重い箇所から減らします。

3.大きな処理を小さな単位へ分ける

一つの要求で大量の記事、画像、API結果を処理せず、件数制限、ページ分割、キュー、Durable Objectsなど用途に合う仕組みへ分けます。閲覧者への応答に不要な処理は、応答経路から切り離します。

4.メモリ超過は全量バッファをストリームへ変える

CloudflareのWorkers Best Practicesは、大きなRequestやResponseを一括で読み込まず、ストリーミングすることを推奨しています。内容を変更しないならResponse bodyをそのまま渡し、加工が必要でも逐次処理を検討します。

5.入力上限と早期終了を設ける

JSON、フォーム、画像、HTMLを読み込む前にContent-Lengthや業務上の上限を確認し、不要な大容量入力を処理しません。上限を超えた要求には、秘密情報を含まない明確な応答を返します。

6.CPU上限引き上げは最適化後に判断する

PaidプランではCPU時間上限を調整できますが、無限ループ、入力比例の急増、重複計算を残したまま上げると、遅い処理と費用を固定化します。必要CPUを測定し、業務上妥当な処理だけに限定して設定します。メモリ上限の128MBは同じ方法で引き上げるものではありません。

7.修正版を段階的に展開する

本番データでのみ再現する場合は、プレビューとテストを通したうえで、可能なら新旧バージョンへトラフィックを分け、エラー率とCPU時間を監視します。異常があれば安定版へ戻せる状態を保ちます。

WordPressサイトで確認するポイント

  • 長い記事、検索結果、フィード、REST APIだけ失敗していないか
  • 画像・バックアップ・フォームなど大容量処理だけ失敗していないか
  • HTML書き換えWorkerを本当に全パスで実行する必要があるか
  • 管理画面、ログイン、プレビュー、保存を不要に加工していないか
  • キャッシュヒットとミスでWorker処理量が変わっていないか
  • 投稿更新後のHTMLサイズ増加と1102開始時刻が一致していないか
  • Worker復旧後にPHPやDB側の別エラーが残っていないか

WordPressのmemory_limitやPHP実行時間はオリジン側の設定です。1102がWorkersのExceeded MemoryまたはExceeded CPU Time Limitsなら、PHP設定を上げても直接の解決にはなりません。発行元と資源の場所を分けてください。

再発を防ぐチェック

  • エラー率、CPU time、wall time、メモリ結果をデプロイ前後で比較する
  • 長文、大きなJSON、画像、空値、異常値をテストに含める
  • 大きな本文を全量保持せず、ストリームを基本にする
  • ルートを必要最小限にし、不要なWordPressパスを除外する
  • 新機能を段階展開し、安定版のロールバック先を残す
  • ログへ本文・秘密値を出さず、識別に必要な情報だけ残す
  • 公式のLimitsを定期確認し、固定値をコードへ埋め込まない

やってはいけない対処

  • 原因未確認のままCPU上限だけを最大化する
  • 1102を見てWordPressのPHPメモリだけを変更する
  • 巨大なRequest・Response・ログを全量メモリへ載せる
  • 本番の投稿保存や外部送信を連打して再現する
  • 全Cloudflare機能を無効化し、影響範囲を分からなくする
  • 安定版と関連データの互換性を見ずにロールバックする

よくある質問

1102はアクセス集中だけで起きますか?

アクセス集中がきっかけになることはありますが、単一リクエストの重い計算や巨大な本文でも発生します。失敗件数だけでなく、失敗した要求ごとのCPU時間、入力サイズ、メモリ結果を確認します。

待てば自然に直りますか?

一時的な入力や負荷なら次の要求は成功する場合がありますが、同じ処理が同じ上限を超えるなら再発します。送信系操作を連打せず、運営者がMetricsとLogsを確認してください。

CPU上限を上げれば解決しますか?

業務上必要な重い計算には有効ですが、無限ループや重複処理、入力サイズに比例して増え続ける設計の根本解決にはなりません。Profilerで必要量を測り、最適化と分割を先に行います。

WordPressの長い記事だけ失敗する場合は?

WorkerがHTML全体を一括読込・解析・置換している可能性があります。成功記事と失敗記事の応答サイズ、処理回数、キャッシュ状態を比べ、対象処理の限定やストリーミングを検討してください。

まとめ:1102はCPUとメモリを分けて直す

Cloudflare Error 1102では、WordPressを先に変更せず、対象Worker、ルート、Invocation Status、CPU time、wall time、入力サイズを確認します。CPU超過は重い計算を減らして分割し、メモリ超過は全量バッファをやめてストリーミングへ変えるのが基本です。

更新直後は安定版への復旧も検討し、修正版は段階的に展開します。Invocation StatusがUncaught Exceptionなら、資源上限を上げずにError 1101の例外ログ確認へ切り替えてください。

-速度改善・安全対策