何が起きたのか?
408 は「クライアントが送ってくる途中で時間がかかりすぎたので、サーバー側で受付を打ち切った」というサインです。 教室で言えば、解答用紙を書き終えて持っていくのが遅すぎて、回収の締切を過ぎてしまった——そんな状況に近いです。
504 が「上流サーバーが応答しないので諦めた」のに対して、408 は「クライアントがリクエストを完成させるのを待ちきれなくなった」状態です。原因の大半はクライアント側のネットワークかリクエストの大きさにあります。
黒板からのひとこと
授業の最後に「あと 5 分で答案を集めるよ」と先生が告げたら、生徒は手を急がせます。それでも書き終わらない子がいれば、先生はやがて「ここまでで集めるね」と区切る。授業の進行と公平のために、待ち時間には限度があるからです。
408 もそれと同じで、サーバーが「ここまで」と区切った合図です。再送すれば多くの場合は通ります。ただ、頻繁に出るときは回線やリクエストの大きさを見直すサインでもあります。
解決への歩み
大丈夫、次はこうしてみよう:
- そのまま再送してみる:一時的なネットワーク詰まりなら次回は通ることが多い
- 回線状態を確認:モバイルから Wi-Fi へ切り替え、速度を測る
- 大きなアップロードは分割:multipart や chunked、resumable 方式に切り替える
- タイムアウト値を見直す(管理者向け):プロキシ・LB・サーバーの receive timeout を整合させる
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 408 Request Timeout
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>408 Request Timeout</h1></body></html>