Cosminexus 簡易構築・運用ガイド

[目次][用語][索引][前へ][次へ]

付録F J2EEサーバのスレッド数とファイルディスクリプタ数の見積もり

ここでは,J2EEサーバのスレッド数とファイルディスクリプタ数の見積もり方法について説明します。Cosminexusを動作させるために必要なディスクおよびメモリの容量を算出するときの参考にしてください。

なお,ここで示すのは,EJBをSession Beanで記述した場合の計算式になります。

参考
SFOサーバのスレッド数とファイルディスクリプタ数は,J2EEサーバと同じです。J2EEサーバの計算式を使用して算出してください。
<この節の構成>
(1) スレッド数
(2) ファイルディスクリプタ数
(3) CORBAネーミングサービス(インプロセス起動時)のスレッド数の見積もり

(1) スレッド数

スレッド数の計算式を次に示します。

(凡例)
  • A:デプロイ済みのEntity Bean,Stateless Session Bean,Stateful Session Beanの数の合計
  • B:Message-Driven Beanを使用する場合,Message-Driven Beanの最大インスタンス数
  • C:EJBサーバ側の最大同時実行数(接続する最大EJBクライアント数)
  • D:CORBAネーミングサービスのスレッド数(ただし,CORBAネーミングサービスをインプロセスで起動(usrconf.propertiesのejbserver.naming.startupModeキーにinprocessを指定)した場合だけ加算する)
  • E:データベースコネクションの数
  • F:リソースアダプタ数
  • G:簡易Webサーバへの同時接続クライアント数(ただし,簡易Webサーバへの同時接続クライアント数が5以下の場合は5,100以上の場合は100を指定する)
  • H:デプロイ済みのWebアプリケーションの数
  • I:インプロセスHTTPサーバのスレッド数(インプロセスHTTPサーバ機能を利用する場合だけ加算する。このスレッド数は,usrconf.propertiesで制御できる)
  • J:Webサーバの同時接続クライアント数(ただし,Webサーバの同時接続クライアント数がWebコンテナの最大同時実行スレッド数(usrconf.propertiesのwebserver.connector.ajp13.max_threadsキーに指定した値)以下の場合は,Webコンテナの最大同時実行スレッド数を指定する)

(2) ファイルディスクリプタ数

ファイルディスクリプタ数の計算式を次に示します。

最大ファイルディスクリプタ数 = (79+A+B+C+D+2×E+F+G) / 0.8

(凡例)
  • A:データベースコネクションの数
  • B:EJBクライアントのプロセス数
  • C:Webサーバの同時接続クライアント数(ただし,Webサーバの同時接続クライアント数がWebコンテナの最大同時実行スレッド数(usrconf.propertiesのwebserver.connector.ajp13.max_threadsキーに指定した値)より大きい場合は,Webサーバの同時接続クライアント数+1を指定する)
  • D:Webコンテナの最大同時実行スレッド数
  • E:簡易Webサーバへの同時接続クライアント数
  • F:インプロセスHTTPサーバ機能を有効にしている場合は4,無効にしている場合は0
  • G:インプロセスHTTPサーバへの同時接続クライアント数

(3) CORBAネーミングサービス(インプロセス起動時)のスレッド数の見積もり

CORBAネーミングサービスをJ2EEサーバ起動時にインプロセスで起動させる場合に,J2EEサーバ上で生成されるCORBAネーミングサービスのスレッド数の見積もりについて説明します。

インプロセスで起動する場合のCORBAネーミングサービスのスレッド数は,次のように見積もります。

合計スレッド数 = 初期化時に生成されるスレッド数+ワーカスレッド数

(a) 初期化時に生成されるスレッド数

初期化時に生成されるスレッド数は,usrconf.propertiesのvbroker.agent.enableLocatorキーの値がtrueの場合は6,falseの場合は4です。なお,vbroker.agent.enableLocatorキーは,CTM連携機能を有効(ejbserver.ctm.enabledキーにtrueを指定)にした場合,自動的にtrueが設定されます。

(b) ワーカスレッド数

ワーカスレッド数は,「同時受け付けリクエスト数+1」と「クライアントとCORBAネーミングサービス間のコネクション数」の合計になります。

ワーカスレッド数に関連するキーを次に示します。

これらのキーは,usrconf.propertiesのejbserver.naming.exec.argsキーの値として指定します。これらのキーの詳細については,マニュアル「Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド」,およびマニュアル「Borland(R) Enterprise Server VisiBroker(R) プログラマーズリファレンス」を参照してください。

vbroker.se.iiop_tp.scm.iiop_tp.dispatcher.threadMaxキーで最大値を指定している場合のワーカスレッド数は,「ワーカスレッド数の最大値」と「クライアントとCORBAネーミングサービス間のコネクション数」になります。

ただし,vbroker.se.iiop_tp.scm.iiop_tp.dispatcher.threadMinキーでワーカスレッド数の最小値を指定している場合,ワーカスレッド合計数が最小値に満たないときは,最小値がワーカスレッド数となります。

最大値を指定していない場合は,多重度の増加に伴いワーカスレッド数も増加していきます。ただし,ワーカスレッドは,アイドルになってからvbroker.se.iiop_tp.scm.iiop_tp.dispatcher.threadMaxIdleキー(デフォルト値は300秒)で指定した時間が経過したあとに消滅(30秒の誤差があります)しますので,負荷が下がるとスレッド数も減少します。

ワーカスレッド数の最大値を指定している場合に,スレッド数とワーカスレッドの最大値が同じになったときは,これ以降のリクエスト受け付けはエラー扱いにはしないで,次のように処理を継続します。