「延期したセッションの期限が切れました」エラーの意味
日付 | 2011/04/14 |
---|---|
ID | 76279 (英語原文参照) |
バージョン | 11, 12 |
プラットフォーム | Mac/Win |
4D v11 SQLには, クライアントプロセス(ローカルプロセスを除く)それぞれがサーバーとの間で下記の3接続を確立します。
- アプリケーションサーバー(デフォルト19813)
- DB4Dサーバー(19814)
- SQLサーバー(19812)
「延期したセッションの期限が切れました」エラーは, DB4Dサーバーの接続および「Idle Connections Timeout」データベースパラメーターと関係があります。
4D v11 SQLは, デフォルトでアイドルコネクションタイムアウトが設定されていません。そのような設定で使い続ける限り, 少なくとも「延期したセッションの期限が切れました」エラーは発生しません。
アイドルコネクションタイムアウトを設定(たとえば20秒)することにより, 4Dの動作は次のように変化します。
DB4Dがサーバーに対する接続を完了した瞬間から20秒のタイマーが始動します。
20秒が尽きるまでに新たなリクエストが発行されなかった場合, DB4DプロセスのTCP接続は閉じられます。この場合, 接続はクライアントとサーバーのネゴシエーションによって閉じられることに留意してください。クライアントとサーバーのどちらかあるいは一方が知らされることなく接続が閉じられたのであれば, それはネットワーク上の何かが接続を切断したことを意味しています。
TCP接続は消滅したとはいえ, サーバはその接続のセッション情報を保持しています。そのようなセッションは「延期」されています。
後にクライアントプロセスがDB4D接続を再開しようとした場合, TCP接続はサーバーが保持しているセッション情報に基づいて自動的に再現されます。そしてその瞬間からまた20秒のタイマーが始動します。
クライアントがDB4D接続を再開しないまま長時間が経過した場合, やがてその延期されたセッションは期限が切れます。つまり, サーバーは保持していたセッション情報をすべてクリアするので, 次にクライアントがDB4D接続を試みたときには「延期したセッションの期限が切れました」エラーが発生することになります。
セッション延期の期限は約24時間なので, 通常の状況下では, 接続したクライアントプロセスが24時間以上放置されない限り, このようなエラーは発生しません。
なお, 4D v12はデフォルトで20秒のアイドルコネクションタイムアウトが設定されています。