目次
はじめに
AWSや一般的なWebシステムを構築・運用する際、「タイムアウト設定」は安定したサービス提供やセキュリティの観点から非常に重要です。
しかし、タイムアウトにはいくつか種類があり、
- セッションタイムアウト
- リクエストタイムアウト
-
アイドルタイムアウト
それぞれ役割や設定場所が異なります。
本記事では、これら3つのタイムアウトについて
- どんな場面で使われるのか
- どんな目的なのか
- どこで設定するのか
を分かりやすく解説します。
タイムアウトの違いを理解し、適切に設定することで、
セキュリティ・パフォーマンス・ユーザー体験の向上につなげましょう。
セッションタイムアウトとは
セッションタイムアウトは、Webアプリケーションでユーザーのログイン状態や認証情報などの「セッション」を管理するためのタイムアウトです。
一定時間ユーザーが操作しない場合、自動的にログアウトさせたり、セッション情報を破棄することで、セキュリティを高めます。
例:
- 30分間何も操作しなければ自動的にログアウトする
- ショッピングサイトで一定時間経過後にカート情報が消える
主な設定場所:
- Webアプリケーションの設定ファイル(PHP, Java, Ruby, Pythonなど)
リクエストタイムアウトとは
リクエストタイムアウトは、クライアント(ユーザー)からWebサーバにリクエストが送られた際、一定時間内にレスポンスが返ってこない場合に接続を切るためのタイムアウトです。
サーバーの処理が遅すぎる場合や、ネットワーク障害時に「504 Gateway Timeout」などのエラーを返します。
例:
- 60秒以内にレスポンスが返ってこなければエラーを返す
主な設定場所:
- ALB(Application Load Balancer)のターゲットグループ
- Webサーバ(Apache, Nginxなど)の設定ファイル
ALB設定箇所:
- [ターゲットグループ]-[ヘルスチェック]-[編集]-[タイムアウト]
アイドルタイムアウトとは
アイドルタイムアウトは、ALB(Application Load Balancer)などのロードバランサーが、クライアントとのTCP接続を維持している際に、一定時間データの送受信がない(アイドル状態)場合に、その接続を自動的に切断するためのタイムアウトです。
不要な接続を長時間維持しないことで、リソースの無駄遣いを防ぎます。
例:
- クライアントとALB間で60秒間通信がなければ接続を切断する
主な設定場所:
- ALBの属性(AWSコンソールやCLIで設定可能)
ALB設定箇所:
- [ロードバランサー]-[属性]-[編集]-[接続アイドルタイムアウト]
まとめ
-
セッションタイムアウトは「ユーザーの操作間隔」なので最も長く設定する
-
リクエストタイムアウトは「1回のリクエスト処理時間」なので短めに設定する
-
アイドルタイムアウトは「TCP接続のアイドル状態」なので、リクエストタイムアウトと同じか少し長めに設定する
-
業務要件やシステムの特性によって最適な値は変わります。
-
WebSocketやストリーミングなど、長時間接続が必要な場合はアイドルタイムアウトを長くしましょう。
-
セキュリティ重視の場合はセッションタイムアウトを短くすることもあります。
おわりに
タイムアウト設定は、Webシステムの安定運用・セキュリティ・ユーザー体験に直結します。
この記事が、AWSやWebアプリのタイムアウト設定で悩むエンジニアの参考になれば幸いです!
ご意見・ご質問があればコメントでどうぞ!