如何分析常見的關鍵AEM問題

瞭解最常見的AEM重大問題以及如何分析這些問題。

說明 description

環境

Adobe Experience Manager (AEM)

問題/症狀

本文會說明最常見的AEM關鍵問題,以及如何分析這些問題。

  • AEM Sites效能
  • AEM Assets效能
  • 記憶體問題
  • 索引問題
  • 復寫問題
  • TarMK損壞問題

解決方法 resolution

AEM Sites效能問題

效能問題的症狀

  1. 頁面載入緩慢
  2. 頁面建立或編輯速度緩慢
  3. AEM回應時間緩慢
  4. AEM未回應某些請求
  5. AEM上的request.log顯示緩慢的回應時間

導致效能問題的原因

  1. 執行緒爭用:長時間執行的請求,例如搜尋速度慢、背景工作編寫量大、移動網站內容的整個分支等。
  2. 高CPU使用率
  3. 成本高昂的請求,如成本高昂的搜尋或效率低下的應用程式程式碼、元件等。
  4. 缺乏適當的維護作業
  5. Dispatcher快取不足
  6. 缺少CDN
  7. 缺少瀏覽器快取
  8. 頁面上載入太多指令碼並在頁面頂端載入
  9. CSS會載入整個頁面,而非HTML標題
  10. 伺服器大小不足或不正確的架構
  11. 記憶體問題(請參閱下文)

如何分析效能問題

  1. 擷取一系列對話串傾印分析它們

  2. 在OS層級檢查AEM Java流程是否導致CPU使用率很高:如果AEM導致CPU使用率很高,則執行現成的設定檔工具幾分鐘,並分析結果。

    • Linux:使用top命令來檢查CPU使用情況。
    • 視窗:使用Windows工作管理員
  3. 分析request.log檔案是否有任何慢速要求

  4. 檢閱您的系統維護程式。 請參閱此文章以瞭解AEM維護的詳細資訊,並確保您對AEM執行正確的維護作業,包括:

    • 修訂清理(僅限MongoMK和Database DocumentNodeStore) — 每日或更頻繁
    • 離線Tar壓縮(僅限TarMK) — 每兩週
    • 資料存放區記憶體回收(僅具有FileDataStore或S3 DataStore的系統) — 每週
    • 工作流程清除 — 每週
    • 版本清除 — 每週
    • 稽核記錄清除 — 每週
  5. 檢閱在AEM Dispatcher層級實作的快取策略。

  6. 檢閱網站的快取

  7. 使用使用者端網站分析工具,例如Google Chrome瀏覽器 開發人員工具 面板中的 稽核 功能。 這些工具會針對使用者端效能改善提供建議。

常見效能問題的解決方案

Assets效能問題

Assets效能問題的症狀

  • 將檔案上傳到/assets.html或/damadmin UI的速度緩慢
  • 縮圖產生時間太長
  • Assets作業(例如移動、刪除、編輯和中繼資料更新)耗時過長

造成Assets效能問題的原因

  • 缺乏適當的維護作業
  • 未套用最新的修正套件
  • 未套用最佳化
  • 伺服器大小不足以因應使用者負載

如何分析Assets效能問題

常見Assets效能問題的解決方案

記憶體問題

記憶體問題的症狀

  • AEM會隨機當機,並且在記錄中觀察到OutOfMemoryError
  • AEM會隨著時間而變慢,最終當機
  • AEM無回應

正在診斷記憶體問題

  • 在記錄檔中搜尋OutOfMemoryError,如果找到任何相符專案,就會發生記憶體問題

  • 檢閱http://aem-host:port/system/console/memoryusage畫面

    如果「舊世代」(JDK 7和更早版本)或「持久世代」(JDK8或更新版本)使用率很高,這可能表示棧積記憶體使用率有問題。 按一下「執行記憶體回收器」以要求JVM執行完整棧積記憶體回收。 如果在請求GC後高棧積使用率保持高水準,則可能有問題。 在具有Oak Tar儲存空間的AEM執行個體上,如果到期使用率高於3GB,則可能會出現問題。 在具有Mongo儲存的系統上,由於記憶體中的快取設定,棧積使用率很高。

  • 進行對話串傾印和最上層輸出並執行對話串分析。 檢查導致CPU使用率高的執行緒是否為原生JVM記憶體回收執行緒。 如果使用最多CPU時間的對話串是「VM對話串」或任何記憶體收集對話串,則可能是記憶體問題。

造成記憶體問題的原因

  • Java應用程式記憶體洩漏
  • 由於在自訂程式碼中定稿的使用不正確,Java定稿器會棧積
  • 最大棧積設定不足

如何分析記憶體問題的原因

如需有關如何擷取棧積傾印的詳細資訊,請參閱本文章

識別記憶體問題原因的最佳方式是分析棧積傾印。

擷取棧積傾印檔案後,請在Eclipse MATIBM記憶體分析器工具中開啟該檔案。 在Eclipse MAT中,執行「洩漏可疑專案」報告並開啟「對話串詳細資訊」檢視,檢視記憶體問題的可能原因。

常見記憶體問題的解決方案

  • 如果您發現長時間的記憶體回收暫停,請最佳化您的應用程式程式碼,以使用較少的記憶體。 最佳化應用程式與調整JVM,是解決大多數記憶體回收問題的最佳方式。
  • 如果您已經最佳化應用程式,而且仍然經歷長時間的GC暫停,則專注於調整JVM

AEM索引問題

索引問題的症狀

以下是AEM/Oak索引問題的跡象:

  • 搜尋結果已超過10分鐘過期
  • 缺少搜尋結果
  • 透過網站UI、查詢產生器搜尋或JCR查詢執行進行搜尋期間,UI或記錄中會傳回錯誤

正在診斷索引問題

若要檢視非同步索引是緩慢還是失敗,請執行以下操作:

  1. 在您的AEM執行個體上開啟這些URL,以檢視Async索引器的相關統計資料: http://aemhost:port/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Dasync%2Ctype%3DIndexStats http://aemhost:port/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Dfulltext-async%2Ctype%3DIndexStats — 此URL僅適用於AEM6.2和更新版本

  2. 在每個頁面上,勾選下列欄位:

    FailingSince — 這表示索引首次開始失敗的時間。

    LastError — 這是棧疊追蹤,顯示導致索引失敗的原因。 如果此為空白,則索引不會失敗。

    LastErrorTime — 這表示上次索引擲回錯誤的時間。

    LastIndexedTime — 如果此欄位的日期和時間超過5分鐘,則索引執行速度太慢。

導致索引問題的原因

  • 維護不當或無法執行維護,例如「修訂記憶體回收」、「工作流程永久刪除」、「稽核永久刪除」、「版本永久刪除」等。
  • Tar儲存區中的區段損毀或遺失
  • 叢集環境(DocumentNodeStore - Mongo或資料庫)中的修訂損毀
  • 叢集環境中的叢集拓朴問題

如何分析導致索引問題的原因

  • 請參閱本文章以分析和修正索引問題

復寫問題

復寫問題的症狀

  • 發佈請求正在復寫代理程式佇列中佇列
  • 發佈內容未顯示在發佈伺服器上
  • 對系統效能的影響

導致復寫問題的原因:

  • 復寫代理程式設定錯誤,無法連線到發佈代理程式
  • 復寫時發生錯誤,導致復寫佇列卡住
  • 系統緩慢,復寫處理緩慢
  • 復寫作為自訂工作流程的一部分進行,而問題是工作流程處理。

如何分析復寫問題:

  1. 檢查復寫佇列狀態

    處理專案時 作用中:

    閒置: 當佇列為空時。

    已封鎖: 專案位於佇列中,但無法處理時;例如,代理程式指向已關閉或不存在的主機。

  2. 如果您的伺服器已複製或代理程式最近已設定,請檢閱復寫設定。 如需詳細資訊,請參閱這裡

  3. 檢閱位於 http://host:port/etc/replication/agents.author/AgentName.log.html#end 的復寫代理程式記錄。 如果您無法識別任何專案,請收集此記錄並向AEM支援人員呈現。

  4. 檢閱來自 AEMinstall/crx-quickstart/logs 的伺服器error.log;如果您無法識別任何專案,請收集此記錄並呈現給AEM支援。

  5. 如果復寫佇列處於「閒置」狀態,且上述皆不適用,則在此情況下,問題很可能是由工作流程所造成。 如果未處理工作流程,則復寫專案永遠不會進入復寫佇列。 若要監視工作流程的狀態,您可以檢查工作流程控制面板以檢查執行中的工作流程例項數目。 您可以在這裡閱讀有關管理工作流程的資訊。

  6. 當系統處於高負載或遇到其他效能問題時,複製速度會變慢。

常見復寫問題的解決方案:

  1. 檢閱復寫佇列問題
  2. 如果問題是因為工作流程未有效執行,您可以檢閱並行的工作流程處理提示

TarMK損壞問題

TarMK損毀的症狀

  • 離線壓縮後無法操作執行個體。
  • 執行個體卡在 啟動進行中 狀態。
  • 記錄檔或壓縮命令輸出報告 SegmentNotFoundException

造成損毀問題的原因

  • 該區段會由手動介入移除(例如rm -rf )。
  • 該區段已被修訂垃圾收藏集移除,或由於程式碼中的一些錯誤而無法找到該區段。
  • 由於程式碼中的一些錯誤,無法找到該區段。
  • 各種維護工作無法按時執行,導致存放庫成長和磁碟空間不足。
  • 終止Java程式,以強制停止AEM。

正在診斷存放庫損毀問題:

  • 請檢閱error.log檔案,並檢查是否有 SegmentNotFoundExceptionIllegalArgument Exception
  • 若要判斷修訂垃圾收藏集是否已移除區段,請檢查org.apache.jackrabbit.oak.plugins.segment.file.TarReader-GC (啟用偵錯記錄)記錄器的輸出。 該記錄器會記錄清理階段所移除的所有區段的區段ID。 只有當違規區段ID出現在該記錄器的輸出中時,修訂垃圾收藏集才會成為例外狀況的原因。
  • 如果外部資料存放區損毀,搜尋記錄檔以找出所有發生錯誤 的錯誤。取得blobId 的InputStream時發生錯誤。 此錯誤表示您的AEM資料存放區目錄中缺少檔案。

修復損毀問題的解決方案:

  • 使用Oak-run的check執行模式,決定區段存放區的最後一個已知良好修訂。 手動將損壞的區段存放區恢復到其最新的良好修訂。 此操作會及時將Oak存放庫恢復到以前的狀態。 您應該在執行此操作之前完整備份存放庫。

    • 若要執行檢查和還原,請依照本文章中提及的步驟操作。
    • 如果檢查失敗並出現 ConsistencyChecker — 找不到良好的修訂,則實作本檔案的B部分中的步驟。
  • 如果您未使用資料存放區,請使用外部檔案、S3或Azure資料存放區,而非預設區段存放區。

    • 使用資料存放區可提供較佳的效能。
    • 使用crx2oak將執行個體移轉至具有資料存放區的執行個體。
  • 套用最新Service Pack和Cumulative Fix Pack以及Oak Cumulative Fix Pack。

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