7.11.4 稼働情報による見積もり
J2EEサーバのテストを実施する場合,または運用開始後のJ2EEサーバによる実際のExplicitヒープ使用状況は,稼働情報で確認できます。ここでは,稼働情報による確認手順について説明します。
稼働情報の出力内容,出力するための設定,および稼働情報ファイルの出力先については,マニュアル「アプリケーションサーバ 機能解説 運用/監視/連携編」の「3.3 稼働情報ファイルの出力機能」を参照してください。
(1) 稼働情報を使用した見積もりの考え方
稼働情報を使用した見積もりでは,システムに必要なExplicitヒープ領域のメモリサイズは次のようになります。
-
HTTPセッションで使用するExplicitヒープ領域のメモリサイズ
-
1.の領域を除いた,内部(コンテナ)で使用するExplicitヒープ領域のメモリサイズ
-
アプリケーションおよびJavaVMで使用するExplicitヒープ領域のメモリサイズ
-
JavaVMがExplicitメモリブロックを管理するために使用するExplicitヒープ領域のメモリサイズ(JavaヒープのSurvivor領域のサイズ×2)
1.〜3.のメモリサイズは,稼働情報で確認できます。4.は,明示管理ヒープの自動解放機能が有効な場合に,「JavaヒープのSurvivor領域のサイズ×2」のメモリサイズを使用します。
1.〜3.で示す各Explicitヒープ領域を使用するものの例を表で示します。なお,1.〜3.は表中の項番1〜3に対応しています。
項番 |
Explicitヒープ領域 |
Explicitヒープ領域を使用するものの具体例 |
---|---|---|
1 |
HTTPセッションで使用するExplicitヒープ領域 |
HTTPセッション |
2 |
コンテナで使用するExplicitヒープ領域 |
HTTPセッション管理用オブジェクト |
3 |
アプリケーションおよびJavaVMで使用するExplicitヒープ領域 |
|
(2) 見積もりに使用する稼働情報取得時の注意
見積もりに使用する稼働情報は,本番環境,または本番環境と同等の環境で取得してください。
次に示す項目が本番環境と異なる場合は,稼働情報を使って適切なメモリサイズを見積もることはできません。
-
各定義ファイルに設定するプロパティ,およびオプションに指定する値
-
サーバに登録されているWebアプリケーションの数
-
業務アプリケーションが処理するデータのサイズ
-
一定時間内に処理するデータの数
また,見積もりのために稼働情報を取得する場合,Explicitヒープ領域を使い切った状態にならないようExplicitヒープ領域サイズの最大値を設定するオプションを指定してください。
Explicitヒープ領域の最大サイズが不十分な状態で稼働情報を取得した場合,Explicitヒープ領域を使い切った状態になるおそれがあります。Explicitヒープ領域を使い切った状態で取得した稼働情報では,適切な見積もりはできません。Explicitヒープ領域を使い切った状態かどうかは,稼働情報のEHeapSize.HighWaterMarkの値が,Explicitヒープ領域の最大サイズの値と同じ値になっているかどうかで確認できます。稼働情報のEHeapSize.HighWaterMarkの値とExplicitヒープ領域の最大サイズの値が同じだった場合,Explicitヒープ領域を使い切っている状態となります。
(3) 見積もり方法
稼働情報を基にした見積もり方法を次に示します。
(a) HTTPセッションで利用するExplicitヒープ領域のメモリサイズ
HTTPセッションで利用するメモリサイズは,「7.11.2 HTTPセッションに関するオブジェクトで利用するメモリサイズ」で示したHTTPセッションで利用するExplicitヒープのメモリサイズの式で求めます。このとき,式に含まれる「1セッションで使用するメモリサイズ」を稼働情報で確認できます。
1セッションで使用するメモリサイズは,稼働情報に出力された「Explicitメモリブロックの最大サイズ」に該当します。「Explicitメモリブロックの最大サイズ」には,稼働情報収集間隔の間に解放されたExplicitメモリブロックのうち,最大のものの利用済みサイズが出力されます。そのため,Explicitヒープを見積もる際は,64キロバイト単位で切り上げて見積もってください。さらに,明示管理ヒープ機能の自動配置機能を使用する場合は,16キロバイトを加算して見積もってください。
また,見積もりをする際は,次に示す値を参考にしてください。なお,システムで必要なセッション数は,「Explicitメモリブロックの個数」に該当します。
-
HTTPセッションで取得したExplicitメモリブロックの最大サイズ(HTTPSessionEMemoryBlockMaxSize.HighWaterMarkの値)
-
HTTPセッションで取得したExplicitメモリブロックの個数(HTTPSessionEMemoryBlockCount.HighWaterMarkの値)
(b) コンテナで利用するExplicitヒープ領域のメモリサイズ
コンテナで使用するExplicitヒープ領域のメモリサイズは,稼働情報の「コンテナで利用するExplicitヒープサイズ」が該当します。見積もりに使用する稼働情報は取得した値の中で最大値(ContainerEHeapSize.HighWaterMarkの値)を使用してください。
(c) アプリケーションおよびJavaVMで利用するExplicitヒープ領域のメモリサイズ
アプリケーションおよびJavaVMで利用するExplicitヒープ領域のメモリサイズは,稼働情報の「アプリケーションで利用するExplicitヒープサイズ」の値が該当します。見積もりに使用する稼働情報は取得した値の中で最大値(ApplicationEHeapSize.HighWaterMark)を使用してください。
(4) 稼働情報の確認手順
稼働情報の確認手順について説明します。ここでは,(3)による稼働情報の見積もり式を例に説明します。なお,稼働情報ファイルの出力内容については,マニュアル「アプリケーションサーバ 機能解説 運用/監視/連携編」の「3.3 稼働情報ファイルの出力機能」を参照してください。
見積もり式
必要なExplicitヒープ領域のメモリサイズ =(HTTPSessionEMemoryBlockMaxSize.HighWaterMarkを64キロバイト単位に切り上げた値 ×HTTPSessionEMemoryBlockCount.HighWaterMark) +ContainerEHeapSize.HighWaterMark +ApplicationEHeapSize.HighWaterMark +JavaヒープのSurvivor領域のサイズ ×2(明示管理ヒープ自動解放機能が有効な場合だけ)
それぞれの値の確認方法について説明します。
(a) HTTPセッションで利用するExplicitヒープ領域のメモリサイズ
HTTPセッションで利用するExplicitヒープ領域のメモリサイズは,JavaVMの稼働情報ファイルに出力されるHTTPSessionEMemoryBlockMaxSize.HighWaterMark,およびHTTPSessionEMemoryBlockCount.HighWaterMarkの値を使って確認します。
HTTPセッションで利用するExplicitヒープ領域のメモリサイズの稼働情報の出力例を次の図に示します。
HTTPSessionEMemoryBlockMaxSize.HighWaterMarkの最大値は,図中1.で示している11:00:31に取得した410472バイト(400.85キロバイト)です。
この値を64キロバイト単位に切り上げると,448キロバイトとなります。HTTPSessionEMemoryBlockCount.HighWaterMarkの最大値は図中2.で示している11:04:31に取得した57です。
これら二つの値を掛け合わせた値が,HTTPセッションで利用するExplicitヒープ領域のメモリサイズとなります。
(b) コンテナで利用するExplicitヒープ領域のメモリサイズ
コンテナで利用するExplicitヒープ領域のメモリサイズは,JavaVMの稼働情報ファイルに出力されるContainerEHeapSize.HighWaterMarkの値を使って確認します。
コンテナで利用するExplicitヒープ領域のメモリサイズの稼働情報の出力例を次の図に示します。
ContainerEHeapSize.HighWaterMarkの最大値は図中1.で示している10:50:31以降に取得している6815744バイト(6656キロバイト)です。
これがコンテナで利用するExplicitヒープ領域のメモリサイズとなります。
(c) アプリケーションおよびJavaVMで利用するExplicitヒープ領域のメモリサイズ
アプリケーションおよびJavaVMで利用するExplicitヒープ領域のメモリサイズはJavaVMの稼働情報ファイルに出力されるApplicationEHeapSize.HighWaterMarkの値を使って確認します。
アプリケーションおよびJavaVMで利用するExplicitヒープ領域のメモリサイズの稼働情報の出力例を次の図に示します。
ApplicationEHeapSize.HighWaterMarkの最大値は図中1.で示している10:53:31に取得した2424832バイト(2368キロバイト)です。
(d) 必要なExplicitヒープ領域のメモリサイズ
(a)〜(c)で示した稼働情報から求められる,必要なExplicitヒープ領域のメモリサイズは次のようになります。
448(キロバイト)× 57 + 6656(キロバイト) + 2368(キロバイト) = 34560(キロバイト)≒ 34メガバイト
明示管理ヒープの自動解放機能が有効な場合,「JavaヒープのSurvivor領域のサイズ×2」を加算した値が,最終的なExplicitヒープ領域の見積もりサイズとなります。