如何分析常見的關鍵AEM問題
瞭解最常見的AEM重大問題以及如何分析這些問題。
說明 description
環境
Adobe Experience Manager (AEM)
問題/症狀
本文會說明最常見的AEM關鍵問題,以及如何分析這些問題。
- AEM Sites效能
- AEM Assets效能
- 記憶體問題
- 索引問題
- 復寫問題
- TarMK損壞問題
解決方法 resolution
AEM Sites效能問題
效能問題的症狀
- 頁面載入緩慢
- 頁面建立或編輯速度緩慢
- AEM回應時間緩慢
- AEM未回應某些請求
- AEM上的request.log顯示緩慢的回應時間
導致效能問題的原因
- 執行緒爭用:長時間執行的請求,例如搜尋速度慢、背景工作編寫量大、移動網站內容的整個分支等。
- 高CPU使用率
- 成本高昂的請求,如成本高昂的搜尋或效率低下的應用程式程式碼、元件等。
- 缺乏適當的維護作業
- Dispatcher快取不足
- 缺少CDN
- 缺少瀏覽器快取
- 頁面上載入太多指令碼並在頁面頂端載入
- CSS會載入整個頁面,而非HTML標題
- 伺服器大小不足或不正確的架構
- 記憶體問題(請參閱下文)
如何分析效能問題
-
在OS層級檢查AEM Java流程是否導致CPU使用率很高:如果AEM導致CPU使用率很高,則執行現成的設定檔工具幾分鐘,並分析結果。
- Linux:使用top命令來檢查CPU使用情況。
- 視窗:使用Windows工作管理員
-
檢閱您的系統維護程式。 請參閱此文章以瞭解AEM維護的詳細資訊,並確保您對AEM執行正確的維護作業,包括:
- 修訂清理(僅限MongoMK和Database DocumentNodeStore) — 每日或更頻繁
- 離線Tar壓縮(僅限TarMK) — 每兩週
- 資料存放區記憶體回收(僅具有FileDataStore或S3 DataStore的系統) — 每週
- 工作流程清除 — 每週
- 版本清除 — 每週
- 稽核記錄清除 — 每週
-
檢閱在AEM Dispatcher層級實作的快取策略。
-
檢閱網站的快取。
-
使用使用者端網站分析工具,例如Google Chrome瀏覽器 開發人員工具 面板中的 稽核 功能。 這些工具會針對使用者端效能改善提供建議。
常見效能問題的解決方案
- 如需最佳化效能方式的詳細步驟,請參閱最佳化AEM網站快取。
- 檢閱效能調整提示
Assets效能問題
Assets效能問題的症狀
- 將檔案上傳到/assets.html或/damadmin UI的速度緩慢
- 縮圖產生時間太長
- Assets作業(例如移動、刪除、編輯和中繼資料更新)耗時過長
造成Assets效能問題的原因
- 缺乏適當的維護作業
- 未套用最新的修正套件
- 未套用最佳化
- 伺服器大小不足以因應使用者負載
如何分析Assets效能問題
常見Assets效能問題的解決方案
- 檢閱AEM 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 MAT或IBM記憶體分析器工具中開啟該檔案。 在Eclipse MAT中,執行「洩漏可疑專案」報告並開啟「對話串詳細資訊」檢視,檢視記憶體問題的可能原因。
常見記憶體問題的解決方案
- 如果您發現長時間的記憶體回收暫停,請最佳化您的應用程式程式碼,以使用較少的記憶體。 最佳化應用程式與調整JVM,是解決大多數記憶體回收問題的最佳方式。
- 如果您已經最佳化應用程式,而且仍然經歷長時間的GC暫停,則專注於調整JVM。
AEM索引問題
索引問題的症狀
以下是AEM/Oak索引問題的跡象:
- 搜尋結果已超過10分鐘過期
- 缺少搜尋結果
- 透過網站UI、查詢產生器搜尋或JCR查詢執行進行搜尋期間,UI或記錄中會傳回錯誤
正在診斷索引問題
若要檢視非同步索引是緩慢還是失敗,請執行以下操作:
-
在您的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和更新版本
-
在每個頁面上,勾選下列欄位:
FailingSince — 這表示索引首次開始失敗的時間。
LastError — 這是棧疊追蹤,顯示導致索引失敗的原因。 如果此為空白,則索引不會失敗。
LastErrorTime — 這表示上次索引擲回錯誤的時間。
LastIndexedTime — 如果此欄位的日期和時間超過5分鐘,則索引執行速度太慢。
導致索引問題的原因
- 維護不當或無法執行維護,例如「修訂記憶體回收」、「工作流程永久刪除」、「稽核永久刪除」、「版本永久刪除」等。
- Tar儲存區中的區段損毀或遺失
- 叢集環境(DocumentNodeStore - Mongo或資料庫)中的修訂損毀
- 叢集環境中的叢集拓朴問題
如何分析導致索引問題的原因
- 請參閱本文章以分析和修正索引問題
復寫問題
復寫問題的症狀
- 發佈請求正在復寫代理程式佇列中佇列
- 發佈內容未顯示在發佈伺服器上
- 對系統效能的影響
導致復寫問題的原因:
- 復寫代理程式設定錯誤,無法連線到發佈代理程式
- 復寫時發生錯誤,導致復寫佇列卡住
- 系統緩慢,復寫處理緩慢
- 復寫作為自訂工作流程的一部分進行,而問題是工作流程處理。
如何分析復寫問題:
-
檢查復寫佇列狀態:
處理專案時 作用中:。
閒置: 當佇列為空時。
已封鎖: 專案位於佇列中,但無法處理時;例如,代理程式指向已關閉或不存在的主機。
-
如果您的伺服器已複製或代理程式最近已設定,請檢閱復寫設定。 如需詳細資訊,請參閱這裡。
-
檢閱位於 http://host:port/etc/replication/agents.author/AgentName.log.html#end 的復寫代理程式記錄。 如果您無法識別任何專案,請收集此記錄並向AEM支援人員呈現。
-
檢閱來自 AEMinstall/crx-quickstart/logs 的伺服器error.log;如果您無法識別任何專案,請收集此記錄並呈現給AEM支援。
-
如果復寫佇列處於「閒置」狀態,且上述皆不適用,則在此情況下,問題很可能是由工作流程所造成。 如果未處理工作流程,則復寫專案永遠不會進入復寫佇列。 若要監視工作流程的狀態,您可以檢查工作流程控制面板以檢查執行中的工作流程例項數目。 您可以在這裡閱讀有關管理工作流程的資訊。
-
當系統處於高負載或遇到其他效能問題時,複製速度會變慢。
常見復寫問題的解決方案:
TarMK損壞問題
TarMK損毀的症狀
- 離線壓縮後無法操作執行個體。
- 執行個體卡在 啟動進行中 狀態。
- 記錄檔或壓縮命令輸出報告 SegmentNotFoundException。
造成損毀問題的原因
- 該區段會由手動介入移除(例如rm -rf )。
- 該區段已被修訂垃圾收藏集移除,或由於程式碼中的一些錯誤而無法找到該區段。
- 由於程式碼中的一些錯誤,無法找到該區段。
- 各種維護工作無法按時執行,導致存放庫成長和磁碟空間不足。
- 終止Java程式,以強制停止AEM。
正在診斷存放庫損毀問題:
- 請檢閱error.log檔案,並檢查是否有 SegmentNotFoundException 或 IllegalArgument Exception。
- 若要判斷修訂垃圾收藏集是否已移除區段,請檢查org.apache.jackrabbit.oak.plugins.segment.file.TarReader-GC (啟用偵錯記錄)記錄器的輸出。 該記錄器會記錄清理階段所移除的所有區段的區段ID。 只有當違規區段ID出現在該記錄器的輸出中時,修訂垃圾收藏集才會成為例外狀況的原因。
- 如果外部資料存放區損毀,搜尋記錄檔以找出所有發生錯誤 的錯誤。取得blobId 的InputStream時發生錯誤。 此錯誤表示您的AEM資料存放區目錄中缺少檔案。
修復損毀問題的解決方案: