目标

本文的目标是详细说明如何对所有常见索引问题进行疑难解答。 

分析较慢查询

转到“工具”->“操作”->“功能板”->“诊断”->“查询性能”将显示较慢查询的列表。 

请参阅本文档以了解有关分析较慢查询的详细信息。

在非生产环境中,可以安装 ACS AEM 工具包以提供用于进一步进行调试的说明查询工具。请参阅文档以了解有关此工具的信息。

重建异步索引

如何重建异步索引

  • 打开 http://aemhost:port/crx/de/index.jsp Web 应用程序并以管理员身份登录
  • 浏览到 /oak:index 下的索引定义
  • 设置布尔型属性 reindex=true。在开始构建索引时,您会看到如下日志消息:

23.06.2015 14:26:23.070 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [/oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]

  • 在“leader”群集节点上正在重建索引时,IndexStatsMBean 的“status”属性值为“running”。
 23.06.2015 14:26:23.517 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing Traversed #10000 /jcr:system/jcr:versionStorage/c8/5f...23.06.2015 14:28:51.999 *INFO* [pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report    - /oak:index/counter*(708)    - /oak:index/authorizables*(159)    - /oak:index/cqPageLucene*(1913)    - /oak:index/ntBaseLucene*(444)    - /oak:index/cqTagLucene*(512)    - /oak:index/workflowDataLucene*(116)
  • 您可以通过检查索引定义节点确认建立索引是否已完成,如果构建索引成功完成,则属性 reindexCount 应会递增,而布尔型属性 reindex 应为 false
23.06.2015 14:28:52.009 *INFO* [pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexing (async) completed for indexes: [/oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116)] in 30.36 s
  • 如果重建索引未完成,并已进入循环,则会看到以下部分

通过对 org.apache.jackrabbit.plugins.index.IndexUpdateorg.apache.jackrabbit.plugins.index.AsyncIndexUpdate 执行 grep,可确定“信息”级别的异步索引活动。

异步索引性能问题

  • 启用日志记录以验证时间:

“跟踪”级别(仅限 Oak 1.0.17 或更高版本):

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perf

“调试”级别:

org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate

org.apache.jackrabbit.oak.plugins.index.IndexUpdate

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor

org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext

org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier

将会生成显示构建索引时序的如下日志:

09.07.2015 08:13:38.401 *TRACE* [192.168.193.1 [1436444018387] POST /content/dam/site/test.createasset.html HTTP/1.1] org.apache.jackrabbit.oak.jcr.operations.writes [session-101777] Adding node [/content/dam/site/test/jackrabbit-oak7.png]
09.07.2015 08:13:38.583 *TRACE* [192.168.193.1 [1436444018387] POST /content/dam/site/test.createasset.html HTTP/1.1] org.apache.jackrabbit.oak.jcr.operations.writes [session-101777] save
09.07.2015 08:13:42.823 *DEBUG* [pool-9-thread-1] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Running background index task async
09.07.2015 08:13:42.963 *TRACE* [pool-9-thread-1] org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor [/oak:index/lucene] Indexed document for /content/dam/site/test/jackrabbit-oak7.png/jcr:content/related is Document<stored,indexed,omitNorms,indexOptions=DOCS_ONLY<:path:/content/dam/site/test/jackrabbit-oak7.png/jcr:content/related> indexed,tokenized<:fulltext:related>>
09.07.2015 08:13:43.579 *DEBUG* [pool-9-thread-1] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report
- /oak:index/siteDamIndex(2)
- /oak:index/lucene(15)

09.07.2015 08:13:43.779 *TRACE* [oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf [/oak:index/siteDamIndex] Index found to be updated. Reopening the IndexNode [took 150ms]
09.07.2015 08:13:45.248 *TRACE* [oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier.perf [/oak:index/lucene] Copied 0 files totaling 0 B [took 1465ms]
09.07.2015 08:13:45.248 *TRACE* [oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier [/oak:index/lucene] opening remote only file segments.gen
09.07.2015 08:13:45.361 *TRACE* [oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf [/oak:index/lucene] Index found to be updated. Reopening the IndexNode [took 1581ms]

  • 获取一系列线程转储并在堆栈中搜索包含 AsyncIndexUpdate 的线程,以查看大部分索引时间花费在哪些过程中,或构建索引过程是否在等待某些其他线程。要获取线程转储,请参阅本文
  • 在 /oak:index/lucene OOTB 索引上设置布尔型属性 saveDirectoryListing=true(仅当使用 Oak 1.0.16 时需要,如果是更高版本,则不需要设置此属性),并设置属性 excludedPaths=[/var, /etc/workflow/instances, /jcr:system] 以对其进行优化。
  • 单击“全部保存”
  • 在创建自定义 lucene 属性索引时,如果使用的是 Oak 1.0.16,则请确保设置 saveDirectoryListing=true (Boolean),并设置 includedPaths (String[]) 属性,以将您的索引限制为仅对特定路径构建索引。

转到以下 URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService“在读取操作时复制”、“在写入操作时复制”(只能在 Oak 1.0.18 和更高版本上安全使用)和“预取索引文件”(只能在 Oak 1.0.18 和更高版本中使用)

分析失败的索引重建

  • 异步索引构建失败后在 JMX UI(以下链接)中检查异步索引器统计信息时,您会看到 LastIndexedTime 是旧的日期和时间:

http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D11%2Cname%3D"async"%2Ctype%3D"IndexStats"

  • 另外,重建索引失败后进入如下循环:

08.01.2015 01:22:04.474 *INFO* [pool-9-thread-2] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes [/oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified]08.01.2015 01:52:08.365 *INFO* [pool-9-thread-5] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes [/oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified]08.01.2015 09:33:23.306 *INFO* [pool-9-thread-5] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes [/oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified]

  • 如果出现这种情况,则应为 org.apache.jackrabbit.oak.plugins.index 启用调试级别的日志记录
  • 在下一次索引进入循环时将显示上述调试日志消息,它会提供有关索引失败原因的更多详细信息。然后,您可以解决该问题,而不论是节点损坏、缺少 blob,还是其他问题。

本产品经 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 许可  Twitter™ 与 Facebook 中的内容不在 Creative Commons 的条款约束之下。

法律声明   |   在线隐私策略