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:
| Part | Limit |
|---|---|
| Request headers | 20 seconds, extended up to 40 seconds while at least 500 bytes per second arrive |
| Request body, such as an upload | 20 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_filesizeandpost_max_sizefor 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.
#