intra-mart Accel Platform / 認可仕様書

第5版 2014-01-01

«  設定ファイル一覧   ::   コンテンツ   ::   運用時のTips  »

認可のキャッシュ設定

認可機能は頻繁に使用されるため、キャッシュを使用して処理を高速化しています。ここでは、認可機能で使用しているキャッシュの箇所と、キャッシュするオブジェクトの単位、キャッシュサイズの計算式についての情報を記載しています。

インストールするアプリケーションとサーバ環境に応じて、キャッシュを設定してください。

キャッシュの概要

intra-mart Accel Platform の機能のうち、頻繁に利用される機能のひとつに認可があります。認可は画面やデータ、各サービスにおける権限チェックを統括して行うため、あらゆる機能から使用される機能です。

例えば、intra-mart Accel Platform にログインした後に表示されるグローバルナビや、各機能へのリンクを表示するサイトマップでは、アクセス権限のあるリンクのみを表示しているため、各リンクごとに認可の判断処理が行われます。メニューを例として、認可が行われるまでの処理の流れは下図の通りです。

../../_images/im_ehcache_overview.png

このように、認可の判断結果が確定するまでには多くの処理があり、各処理においてファイルやデータベースへのアクセスが発生します。そこで認可機能では、各処理のうちデータの更新頻度が低く、参照頻度が高いものについて、キャッシュを利用して高速化しています。

これらの処理を高速化するために、大きく以下の4つについてキャッシュしています。

(※) メニュー側のキャッシュですが、便宜上この資料で説明します。

キャッシュされるデータのサイズは、ほとんどの場合、認可に登録されているリソースグループの数に比例します。ユーザモジュールを追加でインストールしたり、取り扱う認可リソースの数が想定数より多くなったりする場合は、キャッシュサイズを見直してください。

キャッシュのサイズは intra-mart Accel Platform と代表的なアプリケーションをインストールした環境のためにサイジングした値をデフォルト値として設定しています。デフォルト値の説明については各キャッシュの計算式を参照してください。

コラム

設定可能な値については「設定ファイルリファレンス キャッシュ設定」を参照してください。

コラム

キャッシュするオブジェクトの上限値に関して、以下の設定方法があります。
運用環境に応じて、どちらの設定を採用するか決めてください。
  • オブジェクトを格納する際の最大サイズ(max-bytes-XXXX)
  • キャッシュするオブジェクトの最大数(max-elements-on-XXXX)

ルーティング設定のキャッシュ

キャッシュ内容

メニューアイテムに登録されている「URL+引数」を「リソースURI」「アクション」に変換するマッピングをキャッシュします。
このキャッシュは、概要図の 1 の部分に該当します。
キャッシュサイズは、「認可リソースマッピング情報キャッシュ設定 (im-ehcache-config/authz-mapped-entry-url.xml)」で設定されています。

キャッシュするオブジェクトの単位

ルーティング設定は、メニューアイテム単位でキャッシュされます。
そのため、キャッシュするオブジェクト数は、登録されているメニューアイテムの数によって見積もります。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = ( (1) + (2) ) × (3)

(1) … 各メニューアイテムに設定されている内容のサイズ (平均 50byte)
(1) = (1a) + (1b) × (1c)
(1a) … URLのバイト数
(1b) … 引数(キー+値) のバイト数
(1c) … 引数の数
(2) … リソースグループIDとアクションを格納したモデルのサイズ (平均 180byte)
(2) = (2a) + (2b)
(2a) … リソースグループIDのバイト数
(2b) … アクションのバイト数
(3) … 登録されているメニューアイテムの数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

(50 + 180) × 500 = 115,000 (約 115KB)
⇒ 128KB

リソースグループ設定のキャッシュ

キャッシュ内容

「リソースURI」を「認可リソースグループ」に変換するマッピングをキャッシュします。
このキャッシュは、概要図の 2 の部分に該当します。
intra-mart Accel Platform をインストールした直後の状態では、画面・処理 (service) のリソースタイプのみキャッシュが行われます。
他のリソースタイプでキャッシュを行う場合は、別途設定が必要です。
リソースタイプごとのキャッシュ設定については、「設定ファイルリファレンス」の「リソースタイプ拡張設定」を参照してください。
キャッシュサイズは、「認可リソース情報キャッシュ設定(画面・処理用) (im-ehcache-config/authz-resourcetype-service.xml)」で設定されています。

キャッシュするオブジェクトの単位

リソースグループ設定は、リソースURI 単位でキャッシュされます。
そのため、キャッシュするオブジェクト数は、登録されているリソースURI の数によって見積もります。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = ( (1) + (2) ) × (3)

(1) … リソースURI のバイト数 (平均 44byte)
(2) … リソースグループID のバイト数 (平均 40byte)
(3) … 登録されているリソースURI の数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

(44 + 40) × 1,000 = 84,000 (約 84KB)
⇒ 128KB

リソース閉塞状態のキャッシュ

キャッシュ内容

「認可リソースグループ」1件あたりの閉塞状態をキャッシュします。
このキャッシュは、概要図の 3 の部分に該当します。
このキャッシュはすべてのリソースグループに対して行われます。
キャッシュサイズは、「認可リソース閉塞情報キャッシュ設定 (im-ehcache-config/authz-resource-block.xml)」で設定されています。

キャッシュするオブジェクトの単位

リソース閉塞状態は、リソースグループ単位でキャッシュされます。
そのため、キャッシュするオブジェクト数は、登録されているリソースグループの数によって見積もります。

キャッシュサイズの計算式

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。

キャッシュサイズ = (1) × (2)

(1) … リソースグループID、閉塞状態のセット (平均 320byte)
(2) … 登録されているリソースグループの数

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

320 × 1,000 = 320,000 (約 312.5KB)
⇒ 320KB

ポリシー設定のキャッシュ

キャッシュ内容

「認可リソースグループ」「認可サブジェクトグループ」「アクション」から取得した「ポリシー」の状態をキャッシュします。
このキャッシュは、概要図の 4 の部分に該当します。
intra-mart Accel Platform をインストールした直後の状態では、画面・処理 (service) のリソースタイプのみキャッシュが行われます。
他のリソースタイプでキャッシュを行う場合は、別途設定が必要です。
リソースタイプごとのキャッシュ設定については、「設定ファイルリファレンス」の「認可ポリシーキャッシュ対象設定」を参照してください。
キャッシュサイズは、「認可ポリシー情報キャッシュ設定 (im-ehcache-config/authz-policy.xml)」で設定されています。

キャッシュするオブジェクトの単位

intra-mart Accel Platform 2013 Autumn 以降の場合

ポリシー設定は、単一の「サブジェクトグループ」に対しての「リソースグループ、リソースタイプ、リソースタイプが指すアクション」毎のポリシー設定をキャッシュします。
そのため、キャッシュするオブジェクト数は、以下の計算式で求めることができます。
キャッシュするオブジェクト数 = (1) × (2) × (3) × (4)

(1) … 登録されているリソースグループの数
(2) … リソースグループがリソースとして持つリソースタイプの数
(3) … リソースタイプが定義するアクションの数
(4) … 登録されているサブジェクトグループの数

intra-mart Accel Platform 2013 Autumn より前の場合

ポリシー設定は、サブジェクトグループ単位でキャッシュされます。
そのため、キャッシュするオブジェクト数は、登録されているサブジェクトグループの数によって見積もります。

キャッシュサイズの計算式

intra-mart Accel Platform 2013 Autumn 以降の場合

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。
キャッシュサイズ = (1) × (2) × (3) × (4)

(1) … 登録されているサブジェクトグループの数
(2) … サブジェクトグループID、リソースグループID、リソースタイプ、アクションのセット(約 170byte)
(3) … 登録されているリソースグループの数
(4) … ポリシー設定数の係数 (認可設定マトリクス全体のうち、運用中キャッシュされる割合)

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

2,200 × 170 × 1,000 × 0.5 = 187,000,000 (約 178.3MB)
⇒ 180MB

intra-mart Accel Platform 2013 Autumn より前の場合

キャッシュが行われる対象データのおおまかなサイズは以下の計算式で求めることができます。
キャッシュサイズ = (1) × ((2) × (3) + (4)) × (5)

(1) … 登録されているサブジェクトグループの数
(2) … リソースグループID、リソースタイプ、アクションのセット (平均 600byte)
(3) … 登録されているリソースグループの数
(4) … (2)(3)を保持するためのマップの初期サイズ (約 2000byte)
(5) … ポリシー設定数の係数 (認可設定マトリクス全体のうち、運用中キャッシュされる割合)

intra-mart Accel Platform のデフォルト値は以下の計算をもとに設定されています。

2,200 × (150 × 1,000 + 2,000) × 0.5 = 167,200,000 (約 159.5MB)
⇒ 160MB

コラム

ポリシー設定数の係数について
認可設定は初期状態ではリソースタイプID service に対してのみキャッシュを行います。
メニュー (リソースタイプID im-menu-group) に対して権限が無い場合、その配下のメニュー項目へ権限確認が行われません。
このため、リソースタイプID service への認可設定がすべてキャッシュされるわけではありません。

«  設定ファイル一覧   ::   コンテンツ   ::   運用時のTips  »