7.8.1 ノンブロッキングI/O通信制御の設定
今までの通信制御(ブロッキングI/O通信制御)の場合,EADSクライアント・EADSサーバ間の最大同時接続数は1,024以下です。そのため,EADSクライアント・EADSサーバ間の最大同時接続数が1,025以上の場合は,ノンブロッキングI/O通信制御を使用することを検討してください。ノンブロッキングI/O通信制御を使用する場合は,eads.server.nonBlocking.enableパラメタにtrueを指定する必要があります。
ただし,EADSクライアント・EADSサーバ間の最大同時接続数が1,024以下の場合は,ノンブロッキングI/O通信制御を使用しないでください。処理性能が低下するため,ノンブロッキングI/O通信制御の効果が期待できません。
- 注意事項
-
-
一部のEADSサーバだけでノンブロッキングI/O通信制御を使用するような運用はできません。クラスタ内のすべてのEADSサーバで,必ずeads.server.nonBlocking.enableパラメタの指定を一致させてください。
-
ノンブロッキングI/O通信制御とイベントリスナは同時に使用しないでください。同時に使用した場合,動作は保証されません。
-
ノンブロッキングI/O通信制御とeztool isolateコマンドをあわせて使用する際,同時に実行されるキャッシュ操作およびファンクション操作リクエスト数の最大値が1,024を超える場合は,EADSクライアントでコネクションエラーが発生するおそれがあります。そのため,eads.admin.operation.isolate.gracefulstop.waitTimeパラメタの指定値には,十分大きな値を指定してください。EADSサーバのクラスタ構成情報の更新が完了してから縮退処理が完了するまでの時間が長くなっても問題がないようにしてください。
また,それに伴ってeztool isolateコマンドの実行時間も延びます。そのため,プロパティやコマンドオプションを使用して,eztool isolateコマンドのタイムアウト時間がeads.admin.operation.isolate.gracefulstop.waitTimeパラメタの指定値よりも大きな値になるように指定してください。
-
ブロッキングI/O通信制御とノンブロッキングI/O通信制御の違いについて,次で説明します。
- 〈この項の構成〉
(1) ブロッキングI/O通信制御
今までの通信制御である,ブロッキングI/O通信制御を使用したEADSクライアント・EADSサーバ間の通信制御を次の図に示します。
|
ブロッキングI/O通信制御では,リクエストを処理する間はそのリクエストを処理するスレッドが占有されるため,EADSサーバは最大同時接続数と同じ数のリクエスト処理スレッドを生成します。
(2) ノンブロッキングI/O通信制御
ノンブロッキングI/O通信制御を使用したEADSクライアント・EADSサーバ間の通信制御を次の図に示します。
|
ノンブロッキングI/O通信制御は,リクエストを処理するスレッドが占有されないため,EADSサーバは最大同時接続数とリクエスト処理スレッド数が同数である必要はありません。これを実現するため,EADSサーバは複数の接続を一括監視して送受信可能になった接続を検知するセレクタスレッドを1個以上生成します。
また,キャッシュおよびファンクションの同時実行スレッド数の制御はタスクスケジューラで行われます。