11. インメモリデータグリッド連携部品

インメモリデータグリッド連携部品のチューニングについて説明します。

11.1. データプリロードの対象エンティティの設定

より初回アクセス時の応答の性能を向上させるためには、 データプリロードの読み込み対象エンティティは、参照回数が多いエンティティを優先してください。
以下の手順で設定します。

11.1.1. JPAの性能情報の採取

インメモリデータグリッド連携部品の性能情報機能を利用してJPAの性能情報を採取します。
性能情報採取の開始・停止の詳細は、 [ 性能情報採取の開始・停止 ]を参照してください。

11.1.2. JPAランキング情報の生成

JPAランキング情報生成コマンドで、採取したJPAの性能情報から、JPAランキング情報を生成します。
ランキング情報は、「エンティティ」に対して「エンティティ参照回数の昇順」で生成します。
実行例)

> create-jpa-ranking.sh -domainname domain1 -type ENTITY -order ENTITY_REF_COUNT 

コマンドについての詳細は [ 運用管理コマンドリファレンス > インメモリデータグリッド連携部品コマンド] を参照してください。

11.1.3. プリロード対象エンティティの設定

設定は、統合運用管理ツールで行います。
ツリービューより「<エンティティ名>」−「プリロード対象エンティティID指定方法」で「ランキング順」を指定します。
「データプリロード」−「ランキングデータのパス」に生成したランキング情報のファイルパスを指定します。
設定についての詳細は、 [インメモリデータグリッド連携部品 ]、 [インメモリデータグリッド連携 ]を参照してください。

11.1.4. データプリロードの実行

データプリロードを実行してください。
データプリロードを実行する詳細な手順は、 [データプリロード の実行 ]を参照してください。

1つのエンティティをインメモリデータグリッドに格納した場合のデータのサイズは以下の計算式で求めることができます。

エンティティIDのバイト数 + シリアライズされたエンティティオブジェクトのバイト数

5KB程のサイズのエンティティを1つロードするのにかかる時間は約13msです。
エンティティ単位のタイムアウト時間の既定値(60秒)でデータプリロードを実行した場合に、ロード可能な件数は約4600件となります。
ロードするデータの件数が多い場合、および、エンティティのサイズが大きい場合はタイムアウト時間の調整が必要です。

11.1.5. 設定方法

統合運用管理ツールで設定する場合:

全体のタイムアウト時間は次の属性の値を変更し、更新ボタンを押してください。
[WebOTX管理ドメイン[<ホスト名>]]-[アプリケーションサーバ]-[永続化サービス]-[データプリロード]の[データプリロードのタイムアウトまでの時間]

エンティティ単位のタイムアウト時間は次の属性の値を変更し、更新ボタンを押してください。
[WebOTX管理ドメイン[<ホスト名>]]-[アプリケーションサーバ]-[永続化サービス]-[データプリロード]-[永続化ユニット]-[<永続化ユニット名>]-[データプリロード対象エンティティ]-[<エンティティ名>]の[同期タイムアウト]

運用管理コマンドで設定する場合:

全体のタイムアウト時間:

otxadmin> set server.persistence-service.data-pre-loads.data-pre-load-timeout=60

エンティティ単位のタイムアウト時間:

otxadmin> set server.persistence-service.data-pre-loads.persistence-unit.<persistence-unit-name>.data-pre-load.<entity-name>.synchronous-timeout=120

persistence-unit-nameには、設定対象の永続化ユニット名を指定します。

entity-nameには、設定対象のエンティティ名を指定します。

11.2. ファイル容量について

JPAの性能情報データおよび、ランキング情報は、ファイルとして出力されます。
それぞれ、採取量により以下のファイル容量が必要となりますので、ディスク容量にご注意ください。 不要となったファイルは、適宜削除してください。

11.2.1. 性能情報データ

find()を1000回呼び出した場合に出力されるファイルのサイズ :約 2.6MB
1回の呼び出しあたり約2.6KBの情報を出力します。

11.2.2. コマンド作業用一時ファイル

find()を1000回呼び出した場合に出力されるファイルのサイズ :約 2.4MB
1回の呼び出しあたり約2.4KBの情報を出力します。