【AEM Daily】慢查询 Traversed 阈值限制设置
【关于AEM】
Adobe Experience Manager (AEM)
一个将 Content Management System (CMS)与 Digital Asset Management (DAM)的强大功能相结合的企业级应用
【正文】
在AEM中执行一句查询语句的时候,会发现没有返回结果
查看日志或者在CRXDE里用语句进行调试,会看到如下提示
如果是在日志里将会是
*WARN* ... java.lang.UnsupportedOperationException: The query read or traversed more than 100000 nodes. To avoid affecting other tasks, processing was stopped.
意思就是字面的意思 你这个查询读取或遍历了超过100000个节点。为避免影响其他任务,已停止处理
AEM默认的节点读取遍历阈值是 100000,内存节点读取阈值是 500000
这个阈值,可以通过以下方式来设定
- AEM6.1-AEM6.2
对于6.1和6.2的版本,这个阈值的设置,必须通过JVM的启动参数来配置
也就是意味着,要重设这个阈值,必须重启AEM
JVM启动参数分别为
-Doak.queryLimitInMemory = 500000
-Doak.queryLimitReads = 100000
- AEM6.3 +
对于6.3及以上版本,就可以不必重启AEM,就可以重设这个阈值
可以通过OSGI Configuration中的 Apache Jackrabbit Query Engine Settings Service 来进行配置
如下图
【写在最后】
如果AEM的版本是6.3及以上的话
AEM的默认JVM启动参数里是不包含 -Doak.queryLimitInMemory 和 -Doak.queryLimitReads 这两个属性的
如果你在启动的时候,自己手动添加了这个属性的话
你再通过OSGI Configuration中的 Apache Jackrabbit Query Engine Settings Service 来配置的话
是不会生效的,JVM的参数的优先级,大于OSGI Configuration