最終更新日 :
|
次にも適用 : CRX, CRX 2.2
問題
CQ または CRX の権限/ACL を多用した場合は、CRX 検索のパフォーマンスに影響を与える可能性があります。検索結果が CRX リポジトリ内の権限に対してフィルターされる必要があるからです。
この問題が発生する場合は、スレッドダンプを取ると、CacheEntryCollector クラスを含むスタックトレースに関連する多くのロック競合が発生することがわかります。
パフォーマンスに著しい影響を与える権限(rep:ACE ノード)がリポジトリに設定されているかどうかを確認するには、次の操作を行います:
- CRX Web アプリ/crxde に移動し、管理者としてログインします
- クリックしてツール => クエリ
- タイプに「XPath」を選択します
- クエリボックスに、次のクエリを入力します:
//element(*,rep:ACL) order by @jcr:score - 実行をクリックします
その結果、5000 を超えるノードになる場合、システムのパフォーマンスを向上させる方法の詳細については、次を参照してください。
解決策
1. まず、ACL の総数を減らすことができるか調べます。次のような役立つヒントがあります:
- 定義された ACL を確認し、余分または不必要になっているかどうかを確認します。共有権限を含むグループを追加し、他のグループをメンバーとして割り当てることによって、多くの場合 ACL の数を減らすことができます。
- ユーザーに対する権限/ACE を直接定義する場合、そのような権限を削除することで、使用している ACE の数を大幅に減らすことができます。次に、共有グループに代わりに設定されている権限で置き換える必要があります。
注意:CRX の ACL を表示する方法がわからない場合は、この記事を参照してください。また、上に記載されている検索 //element(*,rep:ACL) order by @jcr:score を使用して、ACL を検索することもできます。
2. ACE の総数を減らしても、まだパフォーマンスに問題がある場合は、アプリケーションコードで一般的に取得された検索結果のキャッシングレイヤーを実装できるかどうかを確認してください。
3. 最後に、ACL のキャッシュサイズを増やしてください。
- 最新の CRX ホットフィックスパック 2.2.0.56 またはそれ以降をインストールします(公共で利用可能な場合はパッケージシェアをチェックし、そうでなければ Daycare のチケットでリクエストします)。
- キャッシュサイズを変更するには次の JVM パラメーターを追加します:
-Dorg.apache.jackrabbit.core.security.authorization.acl.CachingEntryCollector.maxsize=10000
例えば、現在の rep:ACE ノード数が 10000 未満の場合は 10000 となります。
適用対象
CRX 2.2
アカウントにログイン