WebOTX Manual V10.2 (第4版) 目次を表示 |
ブラウザからWebサーバを経由しAPサーバにアクセスする場合の、WebOTX以外の通信に関するチューニングについて説明します。
全ての通信の基本であるOSのTCP/IPに関する設定について説明します。
TCP/IPに関する最も重要な設定は、送信タイムアウト時間とKeepAliveの設定です。例えば、通信相手のサーバマシンの電源が落ちて、TCP/IPの切断処理が行われないままとなった場合、 クライアントでは、送信タイムアウト時間とKeepAliveのどちらかの設定によって障害が検出されるまで、通信できない状態になります。
大抵の場合、送信タイムアウト時間の設定によって、長くて10分程度で障害を検出することができます。ただ、稀に受信待ちとなった場合には、 KeepAliveのOSのデフォルト設定で約2時間障害を検出できません。
KeepAliveの設定は、サーバ側で無効なコネクションを破棄するために利用することがより一般的です。
システムの障害復旧時間の要件に応じて、これらの設定のチューニングを行ってください。
設定内容や設定方法は、次に示すとおり、OS毎に異なります。詳細については、各OSのリファレンスをご覧ください。
HP-UXの場合)
/etc/rc.config.d/nddconf に次のように設定します。
送信タイムアウト時間(データ送信時):
TRANSPORT_NAME[num]=tcp
NDD_NAME[num]=tcp_ip_abort_interval
NDD_VALUE[num]=600000
送信タイムアウト時間(接続要求時):
TRANSPORT_NAME[num]=tcp
NDD_NAME[num]=tcp_ip_abort_cinterval
NDD_VALUE[num]=75000
KeepAlive:
次のデフォルトの設定では、tcp_ip_abort_intervalの値を加えた2時間10分で障害を検出します。
TRANSPORT_NAME[num]=tcp
NDD_NAME[num]=tcp_keepalive_interval
NDD_VALUE[num]=7200000
Linuxの場合)
/etc/sysctl.conf に次のように設定します。
送信タイムアウト時間(データ送信時):
次のデフォルトの設定では、13〜30分で障害を検出します。
net.ipv4.tcp_retries2 = 15
送信タイムアウト時間(接続要求時):
net.ipv4.tcp_syn_retries = 5
KeepAlive:
次のデフォルトの設定では、7200秒 + 75 x 9秒で、約2時間11分で障害を検出します。
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_proves = 9
net.ipv4.tcp_keepalive_time = 7200
Solarisの場合)
/etc/system に次のように設定します。
送信タイムアウト時間(データ送信時):
set tcp:tcp_ip_abort_interval = 480000
送信タイムアウト時間(接続要求時):
set tcp:tcp_ip_abort_cinterval = 180000
KeepAlive:
次のデフォルトの設定では、tcp_ip_abort_intervalを加えた2時間8分で障害を検出します。
set tcp:tcp_ip_keepalive_interval = 7200000
Windowsの場合)
レジストリHKEY_LOCAL_MACHINE\System\CurrentControlSet\services\Tcpip\Parametersキーの値を次のように設定します。
送信タイムアウト時間(データ送信時):
次の設定では、アダプタ毎のレジストリ値TcpInitialRTTの値が3000ミリ秒である場合、
3 + (3 x 2) + (6 x 2) + (12 x 2) + (24 x 2)秒で、約93秒で障害を検出します(リトライする度に、リトライの間隔が直前の間隔の2倍になります)。
TcpMaxDataRetransmissions | REG_DWORD | 5 |
送信タイムアウト時間(接続要求時):
次の設定では、アダプタ毎のレジストリ値TcpInitialRTTの値が3000ミリ秒である場合、
3 + (3 x 2) + (6 x 2)秒で、約21秒で障害を検出します(リトライする度に、リトライの間隔が直前の間隔の2倍になります)。
TcpMaxConnectRetransmissions |
REG_DWORD |
3 |
KeepAlive:
次のデフォルトの設定では、7200秒 + 5x1000ミリ秒で、約2時間で障害を検出します。
KeepAliveTime |
REG_DWORD |
7200000 |
KeepAliveInterval |
REG_DWORD |
1000 |
TcpMaxDataRetransmissions |
REG_DWORD |
5 |
次のレジストリ値TcpInitialRTTは、設定場所やデフォルト値がOS毎に異なります。
デフォルト値についてはOS毎に確認して頂く必要がありますが、TcpMaxConnectRetransmissionsやTcpMaxDataRetransmissionsといった再送回数のチューニングだけを行うようにすれば、 設定場所まで意識する必要はありません。
TcpInitialRTT |
REG_DWORD |
3000 |
WebOTXでは、デフォルトの設定でKeepAliveの動作が有効になります。このため、設定変更を行う必要はありません。ここでは、WebOTXで利用することが多いOracleクライアントでの設定方法について説明します。 詳細については、Oracleのリファレンスを参照してください。
Oracle thinドライバでKeepAliveを有効にするための設定
JDBCデータソースのデータソース名[dataSourceName]に設定する接続文字列として、次の形式(例)で設定してください。
"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))(ENABLE=BROKEN))" |
Oracle OCIドライバおよびC++アプリケーションでKeepAliveを有効にするための設定
Oracle Net Serviceの tnsnames.oraファイルに、次の形式(例)で設定してください。
ORCL = (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=1521))(CONNECT_DATA= (SERVICE_NAME=ORCL))(ENABLE=BROKEN)) |
(*)Windowsの初期値はOSにより様々です。OSのリファレンスやホームページで確認してください。
Web ブラウザからリクエストを送信後、応答までのタイムアウト値を設定します。本設定は通常ブラウザ側で行います。使用するブラウザにより、設定箇所が異なります。詳細は各ブラウザのマニュアルを参照してください。
Internet Explorer を使用した場合、以下のレジストリキーに対しReceiveTimeout という DWORD 値を追加して、値の データを <秒数>*1000 に設定します。Internet Explorer 7 の場合、タイムアウト時間は 60分です。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings