AEM实例可以处理多少JCR会话。?

AEM实例可以处理多少JCR会话。?,aem,jcr,aem-6,Aem,Jcr,Aem 6,最近,当访问页面加载速度非常慢且在error.log文件缓存中时,我能够看到与内存泄漏相关的错误,这让我陷入了一个问题AEM实例可以处理多少JCR会话。 使用resourcesolver界面,避免使用Session 如果为您的服务、Servlet或模型(Sling Model,WCMUse)提供了ResourceResolver,或者您通过自适应创建了一个实例:不要关闭它 如果您必须通过resourcesolverfactory手动创建resourcesolver,那么它应该是短期的,并在完成后

最近,当访问页面加载速度非常慢且在error.log文件缓存中时,我能够看到与内存泄漏相关的错误,这让我陷入了一个问题AEM实例可以处理多少JCR会话。

  • 使用
    resourcesolver
    界面,避免使用
    Session
  • 如果为您的服务、Servlet或模型(Sling Model,WCMUse)提供了
    ResourceResolver
    ,或者您通过自适应创建了一个实例:不要关闭它
  • 如果您必须通过
    resourcesolverfactory
    手动创建resourcesolver,那么它应该是短期的,并在完成后关闭
  • 这同样适用于
    会话
  • 例如:

    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();
        }
      }
    }
    

    这取决于许多因素,因此没有可能的答案。例如:泄漏的原因是什么?@FlorianSalihovic我们有一个开发框,所有用户都连接到该开发框,并试图执行/测试开发的代码库。(大多数代码片段都有JCR会话来建立和检索数据类用例),测试页面时几乎没有负载。那么,有没有办法找出JCR会话的数量以及AEM服务器可以处理的最大限制?您在日志中看到“CacheManager:Resizell”之类的内容了吗?如果是,请尝试以下命令:jmap-histo | grepsessionimpl,它将为您提供会话列表。我认为这取决于两个主要因素,开放率和关闭率。不关闭会话的错误代码。若有太多的长时间运行的操作,那个么即使编写良好的代码也会导致JCR会话的增加(例如在缓慢的Mongo部署上),并且系统会减慢到停止。