概要
この記事では、Tibco Data Virtualization (TDV) におけるSession Timeout、Request Timeout、PingInterval、PingIntervalWindow値と、他のネットワーク機器等のタイムアウトとの相関関係と、全体的な影響について説明します。
背景
ファイアウォール(FW)/ロードバランサー(LB)/ルーターのタイムアウトは、「非アクティブ」な状態に基づいています。
つまり、パケットが流れている限り、接続が何時間続いても気にしませんが、一旦パケットの流れが停止すると、ファイアウォールは接続が何らかの理由で切断されたと想定し、その時点からファイアウォール レベルのタイムアウトが開始されます。
これは、ファイアウォールが、ルーティングテーブルから切断されたコネクションを取り除くための単純な方法です。
TDV、TDVのドライバーやクライアントは、ファイアウォール、ロードバランサー、ルーターなどのミドルウェア技術が行う前に、接続をシャットダウンする必要があります。
詳細
TDVは、ファイアウォールより前に、アイドル状態のセッションを閉じる必要があります。そのためには、セッションタイムアウトは、ファイアウォールよりも短くする必要があります。
(クライアント ツールのアイドル タイムアウト < FW / LB アイドル タイムアウト) > TDV サーバー アイドル タイムアウト
このように、クライアント ツールはアイドル接続を認識し、ロード バランサー、ファイアウォール、または TDV より前に接続を閉じます。
以下は例です:
クライアント ツールのアイドル タイムアウト: 15 分
ファイアウォール / LB のアイドル タイムアウト: 30 分
TDV サーバー セッションのアイドル タイムアウト: 25 分
TDV タイムアウトのほとんどは、リクエストの実行時間の"合計"に基づいています。ただ、ファイアウォールのタイムアウトよりも短くする必要があるのは「アイドル」タイムアウトであって、クエリの合計実行時間ではありません。
「Default Request Timeout」は、リクエストの合計時間のタイムアウトであり、アイドル タイムアウトではありません。
「Default Session Timeout」と「Session Timeout」は、どちらもアイドルタイムアウトです。これらは、その時間「非アクティブ」な場合に有効になります。
しかし、TDVは、クエリの実行中は、たとえパケットが流れていなくても、それを「非アクティブ」とはみなしませんが、ファイアウォールはそうではありません。
ファイアウォールは、接続に関する情報を、純粋にパケットが流れてくるかどうかに基づいて判断することしかできません。そのため、TDV で長時間実行されるクエリがある場合、単に長期間データ行が流れなかったために、ファイアウォールが接続をタイムアウトさせる可能性があります。
解決策
PingInterval と PingTimeoutWindow の値が適切に設定されている限り、ファイアウォールのタイムアウトは無視できるはずです。
PingInterval がファイアウォールのタイムアウトよりも小さいことを確認してください。
PingInterval と PingTimeoutWindow をゼロ以外の値に設定すると、TDV サーバーは数秒ごとにドライバーに「ping」を送信し、長時間クエリーが実行され、データが流れない状態が続いても、接続を維持することができます。
出典