Slate Errors

Client Error

408

Request Timeout

— リクエストのタイムアウト

まずは確認: よくある原因 TOP3

  1. クライアント側のネットワークが遅い
    モバイル回線や Wi-Fi の不安定さで送信に時間がかかっている
  2. アップロードボディが大きいまま細切れに送られている
    大ファイルを低速回線で送って待ち時間を超えている
  3. keep-alive 接続を長時間使い回している
    接続だけ開いてリクエストを送らないと、サーバーが切ることがある

何が起きたのか?

408 は「クライアントが送ってくる途中で時間がかかりすぎたので、サーバー側で受付を打ち切った」というサインです。 教室で言えば、解答用紙を書き終えて持っていくのが遅すぎて、回収の締切を過ぎてしまった——そんな状況に近いです。

504 が「上流サーバーが応答しないので諦めた」のに対して、408 は「クライアントがリクエストを完成させるのを待ちきれなくなった」状態です。原因の大半はクライアント側のネットワークかリクエストの大きさにあります。

黒板からのひとこと

授業の最後に「あと 5 分で答案を集めるよ」と先生が告げたら、生徒は手を急がせます。それでも書き終わらない子がいれば、先生はやがて「ここまでで集めるね」と区切る。授業の進行と公平のために、待ち時間には限度があるからです。

408 もそれと同じで、サーバーが「ここまで」と区切った合図です。再送すれば多くの場合は通ります。ただ、頻繁に出るときは回線やリクエストの大きさを見直すサインでもあります。

解決への歩み

大丈夫、次はこうしてみよう:

  1. そのまま再送してみる:一時的なネットワーク詰まりなら次回は通ることが多い
  2. 回線状態を確認:モバイルから Wi-Fi へ切り替え、速度を測る
  3. 大きなアップロードは分割:multipart や chunked、resumable 方式に切り替える
  4. タイムアウト値を見直す(管理者向け):プロキシ・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>

似ているケース

もっと知りたい