3.1.13 一時クローズ機能
大規模なシステムを構築する場合,TCP/IPが管理するコネクション数が不足するおそれがあります。このような場合に,使用するコネクション数を制限するのが,一時クローズ機能です。
TP1/EEでは,コネクション確立時のオーバヘッドを抑えるために,確立したコネクションを切断しないで保持し,同一宛先との通信に再利用します。保持するコネクション数が上限に達した場合に,コネクションを確立したプロセス間の合意によって,コネクションを切断する機能を一時クローズ機能といいます。
この機能を送受信用コネクションで使用する場合は,RPC関連定義のrpc_reply_sockctl_useオペランドにYを設定します。同様に,受信用コネクションで使用する場合は,RPC関連定義のrpc_recv_sockctl_useオペランドにYを設定します。
一時クローズ機能の要求元では,使用中コネクション数が定義で指定した一時クローズ処理開始数の割合以上になると処理を開始し,確立時刻が古いコネクションから順に一時クローズ処理非対象数の割合で指定したコネクション数になるまで一時クローズ処理要求を送信します。その後,一時クローズ処理応答を受信することで,そのコネクションは解放されます。
一方,要求先では一時クローズ処理要求を受信すると,一時クローズ処理応答を要求元へ送信することで,コネクションが切断可能であることを通知します。
一時クローズ機能使用時の例を次の図に示します。
|
|
(1) コネクション種別
一時クローズ機能で処理対象となるコネクション種別を次の表に示します。
|
コネクション種別 |
一時クローズ処理対象 |
|---|---|
|
送信用コネクション※ |
× |
|
受信用コネクション |
○ |
|
送受信用コネクション |
○ |
|
常設コネクション:rapサーバ |
× |
|
常設コネクション:rapクライアント |
× |
|
TCP/IP共有送信用コネクション |
× |
- (凡例)
-
○:一時クローズ処理の対象です。
×:一時クローズ処理の対象外です。
- 注※
-
このコネクションは,定義(eesvgdef)で指定したコネクション数分を確立したままとするコネクションなので,一時クローズ対象外とします。
また,一時クローズ要求電文の送信時に,RPC電文の送信が行われているコネクションについては,一時クローズ要求処理を行いません。
(2) 一時クローズ処理を開始する契機
一時クローズ機能では,次に示すオペランドによって一時クローズ処理開始数と一時クローズ処理非対象数の割合を指定できます。
|
コネクション種別 |
最大コネクション数定義 |
一時クローズ処理開始数定義(割合) |
一時クローズ処理非対象数定義(割合) |
|---|---|---|---|
|
受信用コネクション※ |
mysvgdef定義コマンドの-sオプション指定値 |
rpc_recv_sockctl_highwaterオペランドの第1指定値 |
rpc_recv_sockctl_highwaterオペランドの第2指定値 |
|
送受信用コネクション |
rpc_reply_con_max_cntオペランド指定値 |
rpc_reply_sockctl_highwaterオペランドの第1指定値 |
rpc_reply_sockctl_highwaterオペランドの第2指定値 |
- 注※
-
受信用コネクションでは,受信スレッド(mysvgdefオペランドのポート番号)ごとに使用中コネクション数および非対象数を算出して一時クローズ処理を行います。
使用中コネクション数が次の値以上となった場合に,一時クローズ処理を開始します。
↑((最大コネクション数定義)×(一時クローズ処理開始数定義÷100))↑
また,一時クローズ処理非対象とするコネクション数は次の値となります。
↑((最大コネクション数定義)×(一時クローズ処理非対象数定義÷100))↑
(3) 一時クローズ機能使用時のコネクション数推移
一時クローズ機能では,使用中コネクション数がオペランドで指定した処理開始数以上になった場合に,確立時刻の古いコネクションから順に一時クローズ処理要求を送信します。一時クローズ処理要求は,オペランドで指定した非対象数になるまで行われます。また,一時クローズ処理要求後にコネクション数が増加した場合も,使用中コネクション数が処理開始数以上であれば,増加したコネクション数分,一時クローズ処理要求を送信します。
コネクション数推移を次の図に示します。
|
|
(4) 注意事項
一時クローズ機能を使用した場合は,応答受信スレッドで一時クローズ処理用の電文送受信処理が発生するため,送受信用コネクションを使用する受信処理やコネクション受付処理が機能未使用時と比べて遅れることがあります。