Troubleshoot 408 errors

Published

Updated

❗

Request Timeout.

A 408 Request Timeout means the server closed the connection because the client did not send the complete request in time. The delay sits on the sending side, such as a slow or broken connection, not in the app.

Limits on fortrabbit

Apache waits a limited time for each part of a request:

PartLimit
Request headers20 seconds, extended up to 40 seconds while at least 500 bytes per second arrive
Request body, such as an upload20 seconds, extended as long as at least 500 bytes per second arrive

A client that stays below these limits gets a 408. A large upload on a fast connection is fine; the limit is on stalled or very slow transfers.

Common causes

  • A mobile or unstable connection that stalls during an upload
  • A client that opens a connection and sends nothing, such as some bots and health checks
  • A proxy or VPN between the client and fortrabbit that holds the request back

A 408 happens before PHP runs, so the PHP log stays empty. The access log in the logs shows the 408 with the client IP.

What to try

  • Repeat the request from another network.
  • Split large uploads into chunks, which many upload libraries support.
  • Check upload_max_filesize and post_max_size for large uploads. Those return a PHP error, not a 408, but often show up in the same situations.

A 408 from one client is a connection issue. Many 408 errors from many clients at once can point to a platform issue: check the fortrabbit status page.

Frequently asked

What is a 408 error?

A 408 Request Timeout is an HTTP status code the server sends when the client opened a connection but did not finish sending the request in time. The server closes the connection instead of waiting. The cause is on the client side, usually a slow or interrupted connection, and the app code never ran.

#

Written by a human. Review, grammar checks and typo fixes by AI.

AI use & editorial processEdit on GitHub ↗