存放庫的每次更新都會建立內容修訂版本。 因此,每次更新後,存放庫的大小都會增加。 必須清理舊修訂版本以釋放磁碟資源 — 這對於避免不受控制的存放庫成長很重要。 此維護功能稱為「修訂清除」。 自Adobe Experience Manager (AEM) 6.0起,就已有離線常式可供使用。
在AEM 6.3和更新版本中,已引入此功能的線上版本,稱為「線上修訂清除」。 相較於必須關閉AEM執行個體的離線修訂清除,在AEM執行個體上線時可以執行線上修訂清除。 線上修訂清除預設為開啟,建議使用此方式執行修訂清除。
注意: 觀看影片 瞭解如何使用「線上修訂清除」。
修訂清除處理包含三個階段: 預估, 壓縮、和 clean up. 預估會根據可能收集到多少廢棄專案來決定是否執行下一個階段(壓縮)。 在壓縮階段期間,區段和tar檔案會被重寫,而遺漏任何未使用的內容。 然後,清理階段會移除舊區段,包括可能包含的任何垃圾。 離線模式通常可以回收更多空間,因為線上模式必須考慮AEM工作集,以免收集額外的區段。
如需有關「修訂清除」的詳細資訊,請參閱下列連結:
此外,您也可以閱讀 Oak官方檔案.
建議使用「線上修訂清除」來執行修訂清除。 離線修訂清除只能在例外情況下使用 — 例如,在移轉至新儲存格式之前,或是Adobe客戶服務要求您這麼做時。
線上修訂清除預設會設定為每天在AEM Author和Publish執行個體上自動執行一次。 您只需在使用者活動最少的期間定義維護時段。 您可以依照下列方式設定「線上修訂清除」工作:
在主AEM視窗中,前往 工具 — 作業 — 控制面板 — 維護 或將瀏覽器指向: https://serveraddress:serverport/libs/granite/operations/content/maintenance.html
暫留在 每日維護期間 並按一下 設定 圖示。
輸入需要的值(週期、開始時間、結束時間),然後按一下 儲存.
或者,如果要手動執行修訂清除工作,您可以:
前往 工具 — 作業 — 控制面板 — 維護 或直接瀏覽至 https://serveraddress:serverport/libs/granite/operations/content/maintenance.html
按一下 每日維護期間.
將游標暫留在 修訂清除 圖示。
按一下 執行.
修訂清除程式會依層代回收舊修訂版本。 這表示每次您執行修訂清除時,都會建立新一代並保留在磁碟上。 不過,這兩種修訂清除型別之間有所差異:離線修訂清除會保留一代,而線上修訂清除則會保留兩代。 因此,當您執行線上修訂清除時 晚於 離線修訂清除會發生下列情況:
此外,請記住,根據認可型別和數量的不同,每一代都可以和上一代相比有不同的大小,因此最終大小會因執行而異。
因此,建議將磁碟大小至少比最初估計的存放庫大小大兩到三倍。
AEM 6.5 介紹 兩種新模式 針對 壓縮 線上版次清除處理的階段:
這些壓縮模式構成效率與資源消耗之間的權衡:尾端壓縮的效果較低,對正常系統作業的影響也較小。 相較之下,完全壓縮的效果較佳,但對系統正常運作的影響較大。
AEM 6.5在壓縮期間也引進了更有效率的內容重複資料刪除機制,進一步減少存放庫在磁碟上的空間。
以下兩張圖表呈現內部實驗室測試的結果,其中說明AEM 6.5與AEM 6.3相比可縮短平均執行時間以及磁碟平均佔用空間:
預設設定會在工作日執行尾部壓縮,並在週日執行完全壓縮。 預設設定可使用新的設定值變更 full.gc.days
的 RevisionCleanupTask
維護任務.
當您設定 full.gc.days
值,完整壓縮會在值中定義的天數期間執行,而尾部壓縮會在值中未定義的天數期間執行。 例如,如果您設定完全壓縮在星期日執行,則尾端壓縮會在星期一到星期六執行。 例如,如果您將完全壓縮設定為一星期的每天執行,則尾部壓縮完全不會執行。
此外,請考量下列事項:
使用新的壓縮模式時,請牢記以下事項:
RevisionCleanupTaskHealthCheck
表示「線上修訂清除」的整體健康狀態。 其運作方式與AEM 6.3相同,且無法區分完全和尾部壓縮。TarMK GC: running tail compaction
TarMK GC: no base state available, running full compaction instead
有時候,在尾部模式和完全壓縮模式之間切換會延遲清理過程。 更準確地說,完全壓縮後,存放庫會成長(大小加倍)。 當存放庫降到完整壓縮前的大小以下時,後續的尾部壓縮會回收額外的空間。 也應避免執行平行維護任務。
建議將磁碟大小至少比最初估計的存放庫大小大兩到三倍。
問題 | 答案 |
升級至AEM 6.5時應該注意什麼? | TarMK的持續性格式會隨著AEM 6.5而改變。這些變更不需要主動式移轉步驟。 現有存放庫會進行滾動式移轉,對使用者而言是透明的。 AEM 6.5 (或相關工具)首次存取存放庫時,就會起始移轉程式。 一旦開始移轉至AEM 6.5持續性格式,存放庫就無法恢復為先前的AEM 6.3持續性格式。 |
問題 | 答案 | |
為什麼我需要移轉存放庫? | 在AEM 6.3中,需要變更儲存格式,尤其是為了改善「線上修訂清除」的效能和功效。 這些變更無法回溯相容,且使用舊版Oak區段(AEM 6.2和舊版)建立的存放庫必須移轉。 變更儲存格式的其他優點:
|
|
仍支援舊版的Tar格式嗎? | AEM 6.3或更新版本只支援新的Oak區段Tar。 | |
內容移轉是否一律為強制性? | 可以。除非您以新的執行個體開始,否則永遠必須移轉內容。 | |
我可以升級到6.3或更高版本並在稍後進行移轉(例如,使用另一個維護時段)嗎? | 否,如上所述,內容移轉是強制性的。 | |
移轉時可避免停機嗎? | 否. 這是一次性工作,無法在執行中的執行個體上完成。 | |
如果我意外執行了錯誤的存放庫格式,會發生什麼情況? | 如果您嘗試對oak-segment-tar存放庫執行oak-segment模組(或反之),啟動失敗並出現 IllegalStateException 並顯示「無效區段格式」訊息。 不會發生資料損毀。 | |
是否需要重新索引搜尋索引? | 否. 從Oak-segment移轉至Oak-segment-tar會導致容器格式發生變更。 包含的資料不受影響,且不會修改。 | |
如何以最佳方式計算移轉期間和之後所需的預期磁碟空間? | 移轉等同於以新格式重新建立區段存放區。 這可用來估計移轉期間所需的額外磁碟空間。 移轉後,可以刪除舊區段存放區以回收空間。 | |
如何最好地估計移轉的持續時間? | 如果符合下列條件,可大幅改善移轉效能 離線修訂清除 會在移轉前執行。 建議所有客戶在升級程式前先執行此作業。 一般而言,移轉的持續時間應與離線修訂清除工作的持續時間類似,假設離線修訂清除工作已在移轉之前執行。 |
問題 | 答案 | |
線上修訂清除應該多久執行一次? | 一天一次. 這是「操作控制面板」中的預設設定。 | |
如何設定線上修訂清除維護任務的開始時間? | 請參閱 如何執行線上修訂清除 區段。 | |
是否有線上修訂清除不應超過的最大頻率? | 建議每天執行一次線上修訂清除,如預設設定。 |
|
決定線上修訂清除執行頻率的主要指標為何? | 不需要判斷頻率,因為「線上修訂清除」已設定為維護工作,且每天都會自動執行。 | |
第一次執行線上修訂清除時,為何無法回收任何空間? | 線上修訂清除會依層代回收舊修訂版本。 每次執行修訂清除時都會產生全新的產生。 只有至少兩代的內容才會被回收,這表示在第一次執行時沒有可回收的內容。 | |
為何第一次線上修訂清除在離線修訂清除後執行時,無法回收任何空間? | 離線修訂清除正在回收除了最新世代以外的所有專案,相較於線上修訂清除的最新兩代。 如果有新的存放庫,「線上修訂清除」在離線修訂清除後第一次執行時,將不會回收任何空間,因為沒有足夠老的層代可回收。 另請參閱的「離線修訂清除後執行線上修訂清除」一節。 本章. |
|
「作者」和「發佈」通常會有不同的「線上修訂清除」視窗嗎? | 這取決於營業時間和客戶線上狀態的流量模式。 維護時段應在主要生產時間之外設定,以實現最佳清理功效。 若為多個AEM Publish執行個體(TarMK陣列),線上修訂清除的維護時段應交錯進行。 | |
執行線上修訂清除之前是否有任何先決條件? | 線上修訂清除僅適用於AEM 6.3及更高版本。 此外,如果您使用舊版AEM,則必須移轉至新版 Oak區段Tar. |
|
決定「線上修訂清除」持續時間的因素為何? | 因素包括:
|
|
執行「線上修訂清除」時,作者是否仍可繼續工作? | 可以,「線上修訂清除」可處理同時寫入。 不過,「線上修訂清除」可以更快且更有效率地運作,而不需要同時執行寫入異動。 Adobe建議將「線上修訂清除」維護作業排程至相對安靜的時間,不會有太多流量。 | |
執行「線上修訂清除」時,磁碟空間和棧積記憶體的最低需求為何? | 線上修訂清除期間會持續監視磁碟空間。 如果可用磁碟空間下降到臨界值以下,則會取消此程式。 關鍵值是存放庫目前磁碟空間的25%,且無法設定。 Adobe建議您讓磁碟的大小至少比最初估計的存放庫大小大兩到三倍。 在清理程式期間,會持續監視可用棧積空間。 如果可用棧積空間下降到關鍵值以下,則會取消此程式。 臨界值是透過org.apache.jackrabbit.oak.segment.SegmentNodeStoreService#MEMORY_THRESHOLD設定。 預設值為15%。 Recommendations的最小壓縮棧積大小建議與AEM記憶體大小建議沒有區分。 一般而言: 如果AEM執行個體的大小足以處理使用案例及其上的預期裝載,則清理程式可獲得足夠的記憶體。 |
|
執行「線上修訂清除」時,預期的效能影響為何? | 線上修訂清除」是背景程式,可同時讀取和寫入存放庫以進行正常的系統作業。 尤其是,它可能需要在短時間內獲得對存放庫的獨佔存取權,以防止其他對話串寫入存放庫。 | |
線上修訂清除預計要執行多久? | 根據內部執行的最新效能測試Adobe,執行時間不應超過兩個小時。 | |
如果線上修訂清除需要更長的時間,該怎麼做? |
|
|
如果線上修訂清除超過設定的維護期間,會發生什麼情況? | 請確定其他維護任務沒有延遲執行。 如果在同一個維護時段內執行比「線上修訂清除」更多的維護任務,就可能會發生這種情況。 維護任務會依序執行,而不會依可設定的順序。 | |
為何略過修訂記憶體回收? | 修訂清除依賴估計階段來決定是否有足夠的垃圾要清除。 估算程式會比較目前的大小與上次壓縮後的存放庫大小。 如果大小超過設定的差異,則會執行清理。 大小差異設定為1 GB。 這實際上表示,如果存放庫大小自上次清除執行以來未增加1 GB,則會略過新的修訂清除疊代。 以下為預估階段的相關記錄專案:
|
|
如果效能影響太大,是否可以安全地中止自動壓縮? | 可以。自AEM 6.3起,您可以透過「操作控制面板」內的「維護工作視窗」或透過JMX安全地停止它。 | |
如果AEM執行個體在排定的清理工作期間關閉,處理程式是否會安全地中止,或是在壓縮完成前封鎖關機? | 修訂清除會中斷,存放庫會安全地關閉。 | |
當系統線上上修訂清除期間當機時,會發生什麼情況? | 在這種情況下,沒有資料損毀的風險。 後續執行會清理記憶體剩餘專案。 | |
未執行線上修訂清除會有什麼影響? | 效能會隨著時間降低。 | |
正在收集哪些修訂版本? | 依預設,「線上修訂清除」只會收集至少24小時之前的修訂版本。 | |
如果同時寫入存放庫時發生太多干擾,會發生什麼情況? | 如果系統上存在寫入並行,線上修訂清除可能需要獨佔寫入存取權,才能在壓縮週期結束時確認變更。 系統進入 forceCompact模式,詳情請參閱 Oak檔案. 在強制壓縮期間,會取得獨佔寫入鎖定,以最終認可變更,而不受任何並行寫入干擾。 若要限制對回應時間的影響,可定義逾時值。 此值預設為一分鐘,這表示如果強制壓縮未在一分鐘內完成,壓縮程式將中止,以支援同時提交。 強制壓縮的持續時間取決於以下因素:
|
|
待命執行個體上如何執行線上修訂清除? |
在冷待命設定中,只有主要執行個體必須設定為執行「線上修訂清除」。 在待命執行個體上,不需要特別排定「線上修訂清除」。 待命執行個體上的對應作業是「自動清除」 — 這對應於「線上修訂清除」的清除階段。 在主要執行個體上執行「線上修訂清除」後,在待命執行個體上執行「自動清除」。 預估和壓縮階段不會在待命執行個體上執行。 |
|
離線修訂清除是否比線上修訂清除能釋放更多磁碟空間? | 離線修訂清除可以立即移除舊修訂版本,而線上修訂清除必須說明應用程式棧疊仍在參考的舊修訂版本。 因此,前者可以比後者更積極地移除垃圾,其效果會透過幾個垃圾收集週期進行攤銷。 另請參閱的「離線修訂清除後執行線上修訂清除」一節。 本章. |
|
有關記憶體對應檔案作業的任何考量事項? |
|
|
線上修訂清除期間必須監視哪些專案? |
|
|
如何檢查線上修訂清除是否已成功完成? | 您可以透過檢查記錄來檢查線上修訂清除是否已成功完成。 例如,「 對應地,會出現訊息」 |
|
我們可以在哪裡找到上次線上修訂清除執行的統計資料? | 透過JMX公開狀態、進度和統計資料( 可透過追蹤進度 您可以使用取得MBean的參照 統計資料僅自上次系統啟動後提供。 外部監控工具可用來讓資料超出AEM運作時間。 另請參閱 有關將健康情況檢查附加至Nagios的AEM檔案,作為外部監控工具的範例. |
|
哪些是相關的記錄專案? |
另請參閱 根據錯誤訊息進行疑難排解 一節。 |
|
如何檢查完成線上修訂清除後,已回收多少空間? | 在清理週期結束時,記錄中出現一則訊息:「TarMK GC #3: cleanup completed 「包括存放庫的大小和回收的垃圾量。 |
|
線上修訂清除完成後,如何檢查存放庫的完整性? | 線上修訂清除後不需要進行存放庫完整性檢查。 不過,您可以執行下列動作,在清除後檢查存放庫狀態: |
|
如何偵測線上修訂清除是否失敗,以及復原的步驟為何? | 失敗情況會以「TarMK GC」開頭的WARN或ERROR記錄訊息標示。 另請參閱 根據錯誤訊息進行疑難排解 一節。 | |
修訂清理健康狀態檢查中會公開哪些資訊? 它們如何以及何時對顏色編碼狀態層級作出貢獻? | 修訂清理健康狀態檢查是 操作控制面板. 狀態為 綠色 如果上次執行線上修訂清除維護工作已順利完成。 它是 黃色 如果「線上修訂清除」維護作業已取消一次。 它是 紅色 如果「線上版次清理」維護作業連續取消三次。 在此情況下,需要手動互動 或「線上修訂清除」可能再次失敗。 如需詳細資訊,請閱讀 疑難排除 一節。 此外,系統重新啟動後,也會重設健康狀態檢查狀態。 因此,新重新啟動的執行個體會在修訂清理健康情況檢查中顯示綠色狀態。 外部監控工具可用來讓資料超出AEM運作時間。 另請參閱 有關將健康情況檢查附加至Nagios的AEM檔案,作為外部監控工具的範例. |
|
如何在待命執行個體上監視自動清除? |
透過JMX使用公開狀態、進度和統計資料 您可以使用取得MBean的參照 統計資料只能從上次系統啟動後使用。 外部監控工具可用於在AEM運作時間以外保留資料。 另請參閱 有關將健康情況檢查附加至Nagios的AEM檔案,作為外部監控工具的範例. 記錄檔也可用來檢查自動清理的狀態、進度和統計資料。 |
|
在待命執行個體的自動清理期間必須監視哪些專案? |
|
如果不執行「線上修訂清除」,可能會發生什麼最壞的情況? | AEM執行個體的磁碟空間用完,而造成生產中斷。 | |
在發佈執行個體上執行線上修訂清理時,高使用者流量是否有問題? | 高使用者流量會影響壓縮階段是否能夠成功完成。 |
|
根據健康狀態檢查與記錄專案,線上修訂清除連續三次未順利完成。 需要什麼才能讓線上修訂清除順利完成? | 您可以採取數個步驟來尋找及修正問題:
|
|
Healthcheck警示開啟時必須執行什麼動作? | 請參閱上一點。 | |
如果「線上修訂清除」在排程的維護期間逾時,會發生什麼情況? | 線上修訂清除」已取消,且剩餘的專案已移除。 下次排定維護期間時,它會再次開始。 | |
原因 SegmentNotFoundException 要登入的例項 error.log 如何復原? |
A
|
如果線上上修訂清除程式期間發生事件,則error.log為詳細資訊。 下列矩陣旨在說明最常見的訊息,並提供可能的解決方案:
階段 | 記錄訊息 | 解釋 | 後續步驟 |
---|---|---|---|
預估 | TarMK GC #2:估算已略過,因為壓縮已暫停。 | 當設定在系統上停用壓縮時,會略過預估階段。 | 啟用線上修訂清除。 |
N/A | TarMK GC #2:估計已中斷: ${REASON}. 正在跳過壓縮。 | 預估階段提前結束。 可能中斷估計階段的一些事件範例:主機系統上的記憶體或磁碟空間不足。 | 取決於特定原因。 |
壓縮 | TarMK GC #2:壓縮已暫停。 | 只要壓縮階段由設定暫停,預估階段和壓縮階段都不會執行。 | 啟用線上修訂清除。 |
N/A | TarMK GC #2:壓縮已取消: ${REASON}. | 壓縮階段提前結束。 可能中斷壓縮階段的一些事件範例:主機系統上的記憶體或磁碟空間不足。 此外,也可以透過關閉系統或透過管理介面(例如作業儀表板內的維護視窗)明確取消壓縮來取消壓縮。 | 取決於特定原因。 |
N/A | TarMK GC #2:5次循環後32.902分鐘(1974140毫秒)內壓實失敗。 | 此訊息並不表示發生無法復原的錯誤,只表示壓縮在嘗試一段時間後終止。 此外,請閱讀 在段落後面。 | 閱讀下列內容 Oak檔案,以及「執行中的線上修訂清除」區段的最後一個問題。 |
清理 | TarMK GC #2:清理已中斷。 | 已透過關閉存放庫來取消清理。 預期一致性不受影響。 此外,磁碟空間很可能無法完全回收。 它將在下一個修訂版清除週期中回收。 | 調查存放庫被關閉的原因,並往後嘗試避免在維護期間關閉存放庫。 |
使用版本號碼(主要和次要)符合AEM安裝Oak核心版本的Oak-run工具發行版本。 例如,如果您的AEM執行個體有Oak核心版本1.22.x,您應該使用最新版本的Oak-run tool 1.22.x。
Adobe提供了一個工具,稱為 Oak-run 執行修訂清除。 您可在下列位置下載:
https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/
此工具是可執行的jar,可以手動執行以壓縮存放庫。 此程式稱為離線修訂清除,因為必須關閉存放庫才能正確執行工具。 請務必根據您的維護期間規劃清理。
如需有關如何提高畫質除程式效能的秘訣,請參閱 提高離線修訂清除的效能.
您也可以在進行維護之前清除舊的查核點(以下程式中的步驟2和3)。 建議僅在執行個體超過100個查核點時採取此做法。
請一律確定您有AEM執行個體最近的備份。
關閉AEM。
(選用)使用工具尋找舊查核點:
java -jar oak-run.jar checkpoints install-folder/crx-quickstart/repository/segmentstore
(選用)然後,刪除未參考的查核點:
java -jar oak-run.jar checkpoints install-folder/crx-quickstart/repository/segmentstore rm-unreferenced
執行壓縮並等待它完成:
java -jar -Dsun.arch.data.model=32 oak-run.jar compact install-folder/crx-quickstart/repository/segmentstore
Oak-run工具引進了多項功能,旨在提高修訂清除流程的效能,並儘可能減少維護時段。
此清單包含數個命令列引數,如下所述:
-mmap。 您可以將此專案設為true或false。 如果設為true,則使用記憶體對應存取。 如果設為false,則會使用檔案存取。 如果未指定,記憶體對應存取會用於64位元系統,而檔案存取則會用於32位元系統。 在Windows上,一律會強制執行一般檔案存取,並忽略此選項。 此引數已取代 — Dtar.memoryMapped引數。
-Dupdate.limit. 定義將暫時交易排清至磁碟的臨界值。 預設值為 10000。
-Dcompress間隔. 壓縮目前對應之前要保留的壓縮對應專案數。 預設值為1000000。 如果有足夠的棧積記憶體可用,您應該將此值增加到更高的數目,以加快輸送量。 此引數已在Oak 1.6版中移除,因此無效。
-Dcompaction-progress-log. 記錄的壓縮節點數。 預設值為150000,這表示在作業期間會記錄前150000個壓縮的節點。 將此與以下記錄的下一個引數一起使用。
-Dtar.PersistCompactionMap。 將此引數設為true會使用磁碟空間而非棧積記憶體來儲存壓縮對應。 需要Oak-run工具 版本1.4 和更高版本。 如需詳細資訊,請參閱 離線修訂清理常見問題 區段。 此引數已在Oak 1.6版中移除,因此無效。
—force。 強制壓縮並忽略不匹配的區段存放區版本。
使用 --force
引數會將區段存放區升級至最新版本,此版本與舊版Oak不相容。 此外,也假設無法降級。 一般來說,您必須謹慎使用這些引數,而且只有在您知道如何使用它們時才使用。
使用中的引數範例:
java -Dupdate.limit=10000 -Dcompaction-progress-log=150000 -Dlogback.configurationFile=logback.xml -Xmx8g -jar oak-run-*.jar checkpoints <repository>
除了上述方法之外,您也可以使用JMX主控台來觸發修訂清除機制,如下所示:
決定離線修訂清除持續時間的因素為何? | 存放庫大小和必須清除的修訂數量會決定清除的持續時間。 |
修訂版本和頁面版本之間有何差異? | |
如果「離線修訂清除」任務未在8小時內完成,應如何加速該任務? | 如果修訂任務未在8小時內完成,並且 執行緒傾印 顯示主要熱點為 InMemoryCompactionMap.findEntry ,搭配oak-run工具使用下列引數 版本1.4 或更高: -Dtar.PersistCompactionMap=true . 此 -Dtar.PersistCompactionMap 引數已在Oak 1.6版中移除。 |