FAQ

クライアント-サーバ接続タイムアウトとは何ですか

ID128
カテゴリー4D 2004関係 運用 その他
プラットフォーム

クライアント-サーバ接続タイムアウトは、呼びかけに反応しない相手との接続を切断するまでの制限時間です。

【環境設定】

4D Serverおよび4D Clientの環境設定ダイアログには、クライアント-サーバ接続タイムアウトを設定するためのダイアル(ルーラ)が存在します。値の範囲は1分から1356分まで分単位、および無制限(0)です。

【スコープ】

上記ダイアログは、それを開いて操作したアプリケーションによって適用対象(スコープ)が違います。4D Serverの環境設定で操作した場合、4D Serverタイムアウトが設定されます。4D Clientの環境設定で操作した場合、4D Clientタイムアウトが設定されます。(4th Dimensionで設定した場合、両方の設定を同時に変更することになります。)

【コマンドによる設定】

クライアント-サーバ接続タイムアウトは、SET DATABASE PARAMETERコマンドで詳細な設定をすることができます。たとえば、Control-Shift-Option(Alt)+F9でランタイムエクスプローラを表示し、コマンドを入力すれば、すぐに設定を確認または変更することができます。

コマンドによる設定方法は、次の点で環境設定ダイアログよりも高度です。

1. 実行中のアプリケーションタイプに関わりなく、サーバあるいはクライアントのタイムアウトを直接、操作することができます。

2. 61分を超えるタイムアウトを正確に設定することができます。

3. 特定のプロセスのみに適用されるタイムアウトを設定することができます。

特定のプロセスのみに適用されるタイムアウトを設定するには、負の値をコマンドに渡します。この場合、新しいタイムアウトはコマンドを実行したプロセスにのみ適用されます。

【タイムアウトの仕組み】

4D Serverと4D Clientは、ユーザが何も操作しない時間も含め、常に双方の状態を確認するために定期的な呼びかけ(ポーリング)を行なっています。タイムアウトとは、最後の呼びかけに対して反応が戻ってくるまでの猶予時間のことです。呼びかけに対する反応があった場合、あるいはコマンドの実行など明示的にクライアントの活動を示す信号をサーバが受信した場合、サーバはタイムアウトを再び数え始めます。同じようにクライアントは、サーバの活動を示す信号を受信した場合、タイムアウトを再び数え始めます。

【タイムアウトに達する場合】

前述のように、ユーザが何も操作しないだけではタイムアウトにはなりません。タイムアウトは、主にネットワーク接続が切断されることにより起こります。あるいは、ネットワーク自体は健在でも、サーバあるいはクライアントが相手からの呼びかけに応じられないほど多忙(ビジー)なために起こるかもしれません。たとえば、ユーザ/カスタムプロセス以外のプロセスが、コマンドを一切呼び出さないループ(配列の操作など)を長時間実行した場合、そのプロセスは4Dのカーネルプロセスに制御を返さないため、定期的な呼びかけ(ポーリング)をすることが不可能になり、結果としてタイムアウトになる恐れがあります。あるいは、印刷などのシステムコールも、処理が終了するまでは4Dのカーネルプロセスに制御を返さないため、タイムアウトを起こす可能性があります。スクリーンセーバの起動やスリープ状態などもポーリングを阻む要因です。特殊な例としては、メニューやポッポアップドロップダウンメニューを表示したままの状態を続けた場合、やはり最終的にはタイムアウトになる恐れがあります。

【タイムアウトを変更する理由】

4D Serverタイムアウトは、4D Serverの観点から、4D Clientが呼びかけに反応しないときに接続を切断するための設定です。これはサーバ側の設定ですが、主にクライアントの都合で変更します。たとえば、印刷など長時間サーバからの呼びかけに応じられない処理を控えている場合、全体のタイムアウトを一時的に長くすることができます。あるいは、重いループ処理やプラグインコマンドなどを特定のプロセスで実行する場合、そのプロセスのタイムアウトを設定(負の値を使用)することができます。

4D Clientタイムアウトは、4D Clientの観点から、4D Serverが呼びかけに反応しないときに接続を切断するための設定です。これはクライアント側の設定ですが、主にサーバの都合で変更します。たとえば、ストアドプロシージャや重い集計など、長時間クライアントからの呼びかけに応じられない処理を控えている場合、タイムアウトを一時的に長くすることによってクライアントとの接続を維持することができます。ただし、この場合、接続は維持されますが、サーバがビジーであることには違いないので、クライアントは何も処理ができなくなり、著しく不快な経験をすることになります。4D Clientタイムアウトは、特殊な理由がない限り変更しないのがベストです。

【タイムアウトでできないこと】

タイムアウトは、ユーザが何もしていないクライアントマシン(アイドル状態)を検出し、切断するためのメカニズムではありません。そのような仕組みが必要であれば、別の方法でアイドル時間を計測し、明示的にQUIT 4Dコマンドをクライアントで実行して終了する必要があります。たとえば、簡易で効果的な方法としてスクリーンセーバの起動ととも終了する方法があります。

スクリーンセーバーの監視と利用