データベースセッションフェイルオーバ機能が使用するデータベースのディスク容量を確保する際,HTTPセッションの属性情報の最大サイズが必要になります。
HTTPセッションの属性情報のサイズをWebアプリケーションの内容から計算して求めることは困難です。そのため,アプリケーションサーバではHTTPセッションの属性情報のサイズ見積もり機能を提供しています。HTTPセッションの属性情報のサイズ見積もり機能を使用すると,実際にアプリケーションを実行し,HTTPセッションに登録した属性のシリアライズ後のサイズ情報をメッセージとして出力できます。
ここでは,HTTPセッションの属性情報のサイズ見積もり機能およびHTTPセッションの属性情報のサイズを求める計算式について説明します。
また,フルガーベージコレクションの抑止をする場合のメモリの確保についても説明します。
HTTPセッションの属性情報のサイズ見積もり機能を使用すると,出力されたサイズ情報を参考にして,HTTPセッションの属性情報の最大サイズに適切な値を見積もることができます。
なお,この機能は見積もり時に使用する機能です。データベースへのグローバルセッションの格納は実施されないため,データベースへの接続は発生しません。
簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内で,webserver.dbsfo.check_size.modeパラメタに「on」を指定してください。
簡易構築定義ファイル,および指定するパラメタの詳細は,マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「4.6 簡易構築定義ファイル」を参照してください。
HTTPセッションの属性情報のサイズの見積もり機能を有効にすると,データベースセッションフェイルオーバ機能に関するほかの設定はすべて無効になります。
なお,HTTPセッションの属性情報のサイズの見積もり機能を使用する場合,「6.3.3 前提となる設定」で示しているHttpSessionオブジェクト数の上限値の指定機能およびHTTPセッションのセッションIDを示すHTTP Cookieの削除機能を有効にしなくても動作します。
HTTPセッションの属性情報のサイズ見積もり機能が有効の場合,Webアプリケーションのリクエスト処理完了時にHTTPセッションの属性情報のサイズを通知する次のメッセージがErrorレベルで出力されます。
表6-9 HTTPセッションの属性情報のサイズを通知するメッセージ
メッセージID | 内容 | サイズの情報に含まれる内容 |
---|---|---|
KDJE34330-I | リクエストごとに作成したHTTPセッションの属性情報のサイズ | HTTPセッションに登録されている属性をシリアライズした結果の合計サイズ(KDJE34331-Iで出力するサイズの合計)※1 |
KDJE34331-I | シリアライズが完了した属性1個分のサイズ |
|
注※1 HTTPセッションに属性が登録されていない場合,java.io.ObjectOutputStreamクラスが書き込むマジックナンバーおよびjava.io.ObjectOutputStreamクラスが書き込むバージョン情報のデータ分のサイズです。
注※2 最初にシリアライズされた属性のサイズにだけ含まれます。
登録されている属性が「Attribute1」,および「Attribute2」であるHTTPセッションから,HTTPセッションの属性情報を作成した場合のメッセージの出力例を次に示します。
KDJE34331-I An attribute was serialized. (J2EE application = App01, context root = /test, request URL = http://host01/test/TestServlet, attribute name = Attribute1, class name = app.MyObject1, size(bytes) = 36, HTTP session ID = 01234567aaaabbbbccccddddeeeeffff) KDJE34331-I An attribute was serialized. (J2EE application = App01, context root = /test, request URL = http://host01/test/TestServlet, attribute name = Attribute2, class name = app.MyObject2, size(bytes) = 25, HTTP session ID = 01234567aaaabbbbccccddddeeeeffff) KDJE34330-I The attribute information was created. (J2EE application = App01, context root = /test, request URL = http://host01/test/TestServlet, size(byte) = 61, HTTP session ID = 01234567aaaabbbbccccddddeeeeffff) |
HTTPセッションの属性情報の最大サイズは次の式で求めることができます。
ここでは,一つのHTTPセッションに対し,一つのjava.io.ObjectOutputStreamのオブジェクトを使用してシリアライズしているものとします。
|
また,HTTPセッションにn個のオブジェクトを属性として登録して,登録した属性をそれぞれ属性1~属性nとする場合,HTTPセッションの属性情報の最大サイズは次の式で求めることができます。
|
|
|
HTTPセッションの属性情報のサイズはシリアライズ後のサイズであるため,HTTPセッションに登録した属性オブジェクトのメモリ上でのサイズとは異なります。そのため,フルガーベージコレクションの抑止で必要となる外部ヒープ領域のメモリサイズの見積もりは別途実施して,適切な値を設定する必要があります。
フルガーベージコレクションの抑止についての詳細は「8. 明示管理ヒープ機能を使用したフルガーベージコレクションの抑止」を参照してください。