解決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服務中的所有背景處理序,以Sling提供的ThreadPool取代Java原生ThreadPoolManager
  5. 實施這些變更後,請重新啟動AEM發佈執行個體。
  6. 監視數天的錯誤記錄以確認​ SegmentNotFoundException ​不再出現。
  7. 驗證存放庫操作是否保持穩定且沒有錯誤。

其他考量:

  • 使用Oak-run的存放庫完整性檢查一致地報告健康的節點和屬性,表示沒有結構損壞。
  • 停用修訂清除或執行離線壓縮並不會解決問題;需要適當的執行緒管理。
  • 如果已設定FileDataStore,手動節點移除選項可能不適用;在嘗試手動介入之前,請一律確認存放庫健康狀況。

相關閱讀

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