解决AEM Publish实例中重复出现的“SegmentNotFoundException”错误

循环​ SegmentNotFoundException ​错误导致Adobe Experience Manager (AEM)发布实例崩溃并变得无响应。 存储库检查未显示损坏,重新启动后问题仍然存在。 由于线程处理不当,在版本清理和数据存储垃圾收集等维护任务期间出现问题。 将线程管理从Java本机ThreadPool切换到Sling提供的ThreadPoolManager解决了此问题。

描述 description

环境

Adobe Experience Manager (AEM)内部部署,v6.5.22.0

问题/症状

  • SegmentNotFoundException​错误重复出现在AEM发布实例日志中。
  • AEM发布实例崩溃并变得完全无响应。
  • 连续错误日志生成导致严重磁盘I/O阻塞。
  • 使用oak-run报告进行存储库一致性检查没有损坏或结构问题。
  • 在重新启动AEM后,即使将维护任务安排在工作时间以外或暂时禁用,问题仍然存在。

解决方法 resolution

请按照以下步骤解决问题:

  1. 检查自定义代码中的会话管理,并在使用后关闭所有存储库会话。
  2. 安排在工作时间以外进行修订清理和数据存储垃圾收集,以减少冲突。
  3. 访问/system/console/jmx处的JMX控制台,并检查SessionStatistics MBean以查找长时间运行或不活动的会话。 使用InitStackTrace标识自定义代码源。
  4. 将AEM服务中所有后台进程的Java本机ThreadPool替换为Sling提供的ThreadPoolManager
  5. 实施这些更改后,重新启动AEM发布实例。
  6. 几天监视错误日志,以确认​ SegmentNotFoundException ​不再出现。
  7. 验证存储库操作是否保持稳定且无错误。

其他注意事项:

  • 使用oak-run进行存储库完整性检查会持续报告健康的节点和属性,这表明没有结构性损坏。
  • 禁用修订版清理或运行脱机压缩不能解决此问题;需要正确的线程管理。
  • 如果配置了FileDataStore,则手动节点删除选项可能不适用;在尝试手动干预之前,请始终确认存储库的运行状况。

相关阅读

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f