2017-03-15 10 views
2

アクセスページが非常に遅く読み込まれ、error.logファイルキャッシュにメモリリーク関連のエラーが表示され、質問に表示されました。AEMインスタンスが処理できるJCRセッションの数。AEMインスタンスで処理できるJCRセッションの数はいくつですか?

+0

ことが可能返答がないことを、非常に多くの要因に依存します。たとえば、リークの原因は何ですか? –

+0

@FlorianSalihovic私たちはすべてのユーザーが接続され、開発されたコードベースを実行/テストしようとするDEVボックスを持っています。 (ほとんどのコードスニペットでは、データの種類のユースケースを確立して取得するためにJCRセッションが用意されています)、ページのテストにはほとんど負荷がかかりません。それで、JCRセッションを確認する方法があります。確立されているセッションの数とAEMサーバーが処理できる最大限の制限があります。 – VAr

+0

ログに「CacheManager:resizeAll」のようなものがありますか?はいの場合は、次のコマンドを試してください:jmap -histo | grep SessionImplこれはあなたにセッションのリストを与えるはずです。私はそれが2つの主な要因、セッションの閉鎖率とオープン率の比率には下がっていると思う。セッションを閉じない不正なコードです。長時間実行されている操作が多すぎると、よく書かれたコードでもJCRセッションが増加する可能性があります(たとえば、Mongoのインストールが遅いなど)、システムの速度が遅くなります。 –

答えて

1
  1. ResourceResolverインターフェイスを使用し、Sessionを使用しないでください。
  2. サービス、サーブレットまたはモデル(Sling Model、WCMUse)にResourceResolverが提供されている場合や、アダプテーションを使用して1つのインスタンスを作成した場合は閉じないでください。
  3. ResourceResolverFactoryでResourceResolverを手動で作成する必要がある場合は、終了後に有効期限が切れて閉じられる必要があります。
  4. 同じことがSessionに当てはまります。

例:

package io.salihovic.florian.examples; 

import javax.annotation.CheckForNull; 

interface ResourceResolverTemplate { 

    @CheckForNull ResourceResolver getResourceResolver(); 

    default void usage() { 
    final ResourceResolver resolver = this.getResourceResolver(); 
    if (resolver != null) { 
     // do something 
     resolver.close(); 
    } 
    } 
} 
関連する問題