この記事は、Cloudflare上でAIプロダクトを運用する中で見つけた落とし穴シリーズの1本である。複数のCloudflareゾーンで5xxエラー比率が高く見え、探索攻撃を疑ったが、実際は無害な内部リクエストが混ざっていただけだった、という話をまとめる。
この記事で分かること
- 504が実際には誰のリクエストなのかをどう見分けるか
- 集計上の異常値と実害の有無は別物であるという実例
- 504を切り分けるときに見るべき指標
この記事で分からないこと(正直に書く)
- 一部ゾーンでEarly Hintsの設定をオフにした場合に504の見え方がどう変わるかは、実際にオフにして検証していない
何が起きたか
複数のCloudflareゾーンで、5xxエラー比率がほぼ全ゾーンで7%台から高いところで50%台まで出ている実測が見つかった。存在しないパスへの探索的なアクセスが混ざっていたため、それが原因だと判断し、WAFのカスタムルールで遮断する方向を検討し始めた(出所: 自社の運用記録、確認日2026-09-06)。
なぜ気づけなかったか
アクセスログをUser-Agentや通信プロトコルで分解すると、504になっている行だけがきれいに1つの塊として分離した。504側のUser-Agentは実在のブラウザやクローラーではなく内部コンポーネントを示す名前で、通信プロトコルもHTTP/1.1・HTTP/2・HTTP/3のいずれでもなかった。逆に200側は実際のUser-Agentとプロトコルがそろっていた。ある1ゾーンの7日間の実測では288,819リクエスト中20,756件(7.4%)が504で、すべて内部コンポーネントのUser-Agentだった。他のゾーンでも504の内訳は同じ種類のUser-Agentで、比率は7.7%から50.0%までばらついていた(出所: 自社の運用記録、確認日2026-09-06)。「504のパス一覧」から原因を推測すると、探索的なアクセスのパスも混ざって出てくるため、探索攻撃が原因だと錯覚しやすい。
どう直したか
ある1ゾーンの1日分で、総リクエスト数から504の件数を引いた値とWorkerの実行回数を突き合わせたところ、14,281リクエストのうち504が3,206件、差し引き11,075に対しWorkerの実行回数は成功11,067件・切断5件の合計11,072件とほぼ一致した(出所: 自社の運用記録、確認日2026-09-06)。504の分はWorkerに到達しておらず、課金もDB読み取りも発生していない。Cloudflareの公式ドキュメントでも、Early Hintsを有効にすると504が増えることがあり、その際のリクエスト元は専用の識別子で示されると説明されている(https://developers.cloudflare.com/cache/advanced-configuration/early-hints/, 確認日2026-09-06)。集計からEarly HintsのUser-Agentを含む行を除外すると、5xx比率は実質ゼロになった。
同じ構成の製品で先に見る場所
自社はカンタン補助金や弁護士みつかるなど複数のプロダクトでCloudflareを使っている。5xx比率を監視するなら、まずUser-Agentの内訳を確認し、内部コンポーネント名を含む行を除外して出し直すのが最初の一手になる。除外してなお実クライアントの504が残る場合だけ調査する価値がある。Early Hints自体は表示速度を上げる機能であるため、監視の見た目を整えるためだけにオフにする判断はしていない。
見えている異常が誰のリクエストかを確認せず対策を決めると無関係な変更をしてしまう点は、Workerが自前で持つキャッシュの記事やX-Real-IPの記事にも近い教訓がある。関連してRAGの保管費用の記事も参照してほしい。
Cloudflare運用・監視設計の相談は、お問い合わせから編集部まで連絡してほしい。
よくある質問
Q1. 504エラーの比率が高いとき、まず何を確認すべきか
User-Agentの内訳を見て、Early Hintsの投機リクエストを示す内部コンポーネント名の行を除外してから比率を出し直す。
Q2. 探索的なアクセスが504の原因ではないと、どうやって分かったのか
総リクエスト数から504件数を引いた値とWorkerの実行回数を突き合わせるとほぼ一致した。504の分はWorkerに到達しておらず、探索アクセスとは無関係だった。
Q3. Early Hintsの設定を切れば504は減るか
減る可能性はあるが試していない。Early Hintsは実ユーザーの表示速度を上げる機能で、504側には課金やデータベースへの影響がないため、切る判断はしていない。