タイムアウトとは
タイムアウト(timeout)は、決めた待ち時間内に通信や処理が完了せず、打ち切られた状態です。
一つの要求にはDNS検索、接続、TLSハンドシェイク、サーバー処理、最初の1バイト、本文転送など複数の待ち時間があります。「タイムアウトした」だけでは、どの時計が期限を迎えたか分かりません。
待つ側が処理を諦めたことと、相手側の処理が停止したことは同じではありません。中止が伝わらなければサーバーは処理を続ける場合があります。

どのタイムアウトかを記録する
サーバーアドレスを得る前の段階です。
経路、ファイアウォール、待受処理、パケット損失が関わります。
証明書検証や暗号方式の交渉を含みます。
サーバー処理・待ち行列・依存先の遅延を含みます。
連続通信の全体時間と、データが来ない無通信時間を分けます。
ネットワークが正常でも、内部で設定した制限時間により打ち切られます。
408と504
408 要求 Timeoutはサーバーが待っている間に完了要求メッセージを受け取れなかった状態です。504 Gateway Timeoutはゲートウェイが上流サーバーから必要な応答を期限内に得られなかった状態です。
ブラウザー独自の「接続がタイムアウトしました」はHTTP応答を受け取る前の可能性があり、HTTPステータスコードとは限りません。
処理全体の制限時間を内側へ配分する
クライアントが定めた処理全体の期限より、ゲートウェイ、アプリケーション、データベースの期限を少し短くし、エラー応答と後始末の時間を残します。要求を処理する各段階へ残り時間と中止指示を伝え、期限後のクエリーや外部呼び出しを止めます。
タイムアウト値を長くするだけでは、遅い依存処理を抱える接続と処理スレッドが増え、障害を拡大します。正常時パーセンタイル値と利用者の待てる時間から、段階別に決めます。
再試行できるかを判断する
タイムアウト時は相手が処理を完了したか不明です。GET等でも負荷を考え、POST・決済・作成では冪等性鍵や結果照会を使います。バックオフ、待ち時間のばらつき、再試行予算、最大試行回数を設けます。
タイムアウトは「どこかが遅い」ではなく、特定の待機主体が設定した期限を越えた結果です。段階名、経過時間、残り時間、中止の成否、処理結果が確定しているかを記録して診断します。
HTTPの408・504を含むステータスの意味:RFC 9110「HTTP Semantics」