タイムアウト (コンピュータ)
タイムアウト(英: timeout)とは、処理時間が不確定または予測不能な処理(膨大なデータ処理・データ転送、ハードウェア制御、通信やセッションなど)を一定時間以内に開始または完了できない場合、それを自動的に打ち切って中止することである。仕様規定以上の待ち時間を回避する目的で使われるほか、永遠に完了しない処理によって無限ループに陥りプログラムの制御を失ったり計算資源(例えばCPUやGPU[1]など)を無駄に占有し続けたりすることを防ぐ。
セッションやコネクションのように相手先と仮想的な通信路を確立して連続的に送受信を行うような仕組みでは、互いに相手から一定時間通信が行われないと接続を終了するように設計されている。ユーザー(利用者)からの操作が一定時間行われない場合などに適用される[2]。これをセッションタイムアウト(英: session timeout)と呼ぶ[3]。
タイムアウトの例
[編集]- 正常に応答可能か不明なハードウェアの制御
- 正常に応答可能か不明なサーバとの接続・通信
- 排他制御された共有資源へのアクセス
- ある種のブラウザクラッシャーの回避
特にネットワーク通信用のAPIには、接続処理やデータの送受信処理について、タイムアウト時間がアプリケーションソフトウェア側で設定できるようになっているものが一般的である[4][5]。また、アプリケーションで明示的に設定しなかった場合、ライブラリやシステムによって定められた既定のタイムアウト時間が使われる。タイムアウトが発生した場合は、通例エラーコード[6][7]や例外のスロー[8]によって通知される。
セッションタイムアウト
[編集]通信システムなどで、接続や利用の開始手続き(ログインなど)をしてから交わされる一連の通信や操作の連なりを「セッション」(session)という。セッションはユーザーが所定の終了手続き(ログアウトなど)をすることによって明示的に終了・切断することができるが、利用終了手続きをせずにユーザーが端末から離れたり、何らかの問題が起きて通信が途絶してしまったりすることもある。このとき、セッションをいつまでも開いたままでは、他のユーザーが利用できなくなったり、セキュリティ問題に発展してしまったり、サーバー側のリソースが枯渇してしまい新しいセッションを開始できなくなってしまったりする。そのため、通信相手から所定の時間以上何の応答もなければ、セッションは自動的に閉じられるようになっている。これをセッションタイムアウトという[3]。
セッションタイムアウトまでの時間はシステムの種類や設定によって異なるが、ECサイトなどWebサービスの場合には数分から30分程度とすることが多い[3]。自動券売機や業務用コピー機などにもセッションタイムアウトが設けられている。
座席予約システムなどでは、たとえ画面を往復するなどして通信が発生し続けていても、仮予約中はキャンセルされるまで他のユーザーが予約できなくなることなどから、一定時間内に購入手続きが最後まで完了しなければタイムアウト(キャンセル)とするようになっている[9]。
脚注
[編集]- ^ Timeout detection and recovery (TDR) - Windows drivers | Microsoft Learn
- ^ タイムアウトとは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ a b c セッションタイムアウトとは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ Option Flags (Wininet.h) - Win32 apps | Microsoft Learn
- ^ SOL_SOCKET Socket Options (Winsock2.h) - Win32 apps | Microsoft Learn
- ^ Error Messages (Wininet.h) - Win32 apps | Microsoft Learn
- ^ Windows Sockets Error Codes (Winsock2.h) - Win32 apps | Microsoft Learn
- ^ Socket (Java Platform SE 8 )
- ^ インターネットチケット販売vitでチケットを購入していたらタイムアウトになりました。席は取れていますか? | TOHOシネマズ よくあるお問い合わせ