修訂清除 revision-cleanup
簡介 introduction
每個對儲存庫的更新都會建立新的內容修訂。 因此,每次更新時,存放庫的大小都會增加。 為避免儲存庫增長失控,需要清理舊修訂版本以釋放磁碟資源。 此維護功能稱為修訂清除。 自AEM 6.0起,已可作為離線常式使用。
AEM 6.3導入了名為「線上修訂清除」的線上版本。 與必須關閉AEM例項的離線修訂清除相比,當AEM例項上線時,可執行線上修訂清除。 「線上修訂清除」預設為開啟,這是執行修訂清除的建議方式。
附註: 請參閱影片 以了解簡介及如何使用「線上修訂清除」。
修訂清除程式包含三個階段: 估計, 壓實 和 清理. 估計會根據可收集的垃圾量,決定是否要執行下一階段(壓縮)。 壓縮階段期間,會重寫區段和tar檔案,留下任何未使用的內容。 清理階段隨後移除了舊段,包括它們可能包含的任何垃圾。 離線模式通常可節省更多空間,因為線上模式需要考慮AEM工作集,而這會保留其他區段無法收集。
如需「修訂清除」的詳細資訊,請參閱下列連結:
此外,您也可以閱讀 官方Oak檔案。
何時使用「線上修訂清除」而非「離線修訂清除」? when-to-use-online-revision-cleanup-as-opposed-to-offline-revision-cleanup
執行修訂清除的建議方式是「線上修訂清除」。 離線修訂清除應僅在例外情況下使用,例如,在遷移至新儲存格式之前,或如果Adobe客戶服務要求您執行此操作,則應先使用。
如何執行線上修訂清除 how-to-run-online-revision-cleanup
依預設,「線上修訂清除」會設定為在AEM製作和發佈執行個體上每天自動執行一次。 您只需在使用者活動最少的期間內定義維護期間即可。 您可以依照下列方式設定「線上修訂清除」任務:
-
在主AEM視窗中,前往 工具 — 操作 — 儀表板 — 維護 或將瀏覽器指向:
https://serveraddress:serverport/libs/granite/operations/content/maintenance.html
-
暫留在 每日維護窗口 並按一下 設定 表徵圖。
-
輸入所需值(重複、開始時間、結束時間),然後按一下 儲存.
或者,如果要手動運行修訂清除任務,可以:
-
前往 工具 — 操作 — 儀表板 — 維護 或直接瀏覽至
https://serveraddress:serverport/libs/granite/operations/content/maintenance.html
-
按一下 每日維護窗口.
-
暫留在 修訂清除 表徵圖。
-
按一下 執行.
離線修訂清除後執行線上修訂清除 running-online-revision-cleanup-after-offline-revision-cleanup
修訂清除程式會逐代回收舊修訂。 這表示每次執行修訂清除時,都會建立新的一代並保留在磁碟上。 不過,兩種修訂清除類型之間有差異:離線修訂清除會保留一代,而線上修訂清除會保留兩代。 所以,當您執行線上修訂清除時 after 離線修訂清除會發生下列情況:
- 執行第一個線上修訂清除後,存放庫的大小會加倍。 之所以會發生這種情況,是因為現在有兩代人保留在磁碟上。
- 在後續運行中,儲存庫將在建立新一代時臨時增長,然後穩定到首次運行後的大小,因為線上修訂清理過程將重新整理上一代。
另外,請記住,根據提交的類型和數量,每代的大小都可能與前一代不同,因此最終大小可能因一次運行而異。
因此,建議將磁碟的大小至少比最初估計的儲存庫大小大兩三倍。
完整和尾部壓實模式 full-and-tail-compaction-modes
AEM 6.4 簡介 兩種新模式 針對 壓實 「線上修訂清除」過程的階段:
- 此 全壓實 模式會重寫整個存放庫中的所有區段和tar檔案。 因此,後續的清理階段可以在整個儲存庫中刪除最大的垃圾量。 由於完全壓縮會影響整個儲存庫,因此需要大量的系統資源和時間才能完成。 完全壓實與AEM 6.3中的壓實階段相對應。
- 此 尾部壓實 模式只會重寫存放庫中最新的區段和tar檔案。 最近的區段和tar檔案是自上次完全或尾部壓縮執行後新增的區段和tar檔案。 因此,後續的清理階段只能移除存放庫最近部分所包含的垃圾。 由於尾部壓縮只影響儲存庫的一部分,因此完成所需的系統資源和時間比完全壓縮要少得多。
這些壓縮模式構成了效率和資源消耗之間的權衡:尾部壓實效果差,對系統正常運行影響小。 相比之下,全壓實效果更好,但對系統正常運行影響較大。
AEM 6.4也導入了壓縮期間更有效的內容重複資料刪除機制,進一步減少存放庫的磁碟空間。
下面的兩張圖表呈現了內部實驗室測試的結果,這些測試說明與AEM 6.3相比,AEM 6.4中磁碟的平均執行時間和平均佔用空間減少了:
如何配置完整和尾部壓縮 how-to-configure-full-and-tail-compaction
預設設定會在周天執行尾部壓縮,並在週日執行完全壓縮。 使用新配置值可以更改預設配置 full.gc.days
的 RevisionCleanupTask
維護任務.
當您設定 full.gc.days
值請注意,完全壓縮會在值中定義的日期期間執行,而尾部壓縮則會在值中未定義的日期期間執行。 例如,如果您設定完全壓縮以在星期日執行,則尾部壓縮將在星期一至星期六執行。 例如,如果您設定完全壓縮以每週的每天執行,則尾部壓縮完全不會執行。
此外,請考量:
- 尾部壓實 效率較低,對正常系統操作的影響較小。 因此,它打算在工作日期間運行。
- 完全壓縮 更有效,但對正常系統操作的影響也更大。 因此,本計畫在工作日使用。
- 尾部壓實和完全壓實都應安排在非高峰時段運行。
疑難排解 troubleshooting
使用新的壓縮模式時,請記住以下事項:
- 您可以監控輸入/輸出(I/O)活動,例如:I/O操作、等待IO的CPU、提交隊列大小。 這有助於確定系統是否正在綁定I/O,並需要更新大小。
- 此
RevisionCleanupTaskHealthCheck
指示「線上修訂清除」的總體運行狀況。 其運作方式與AEM 6.3相同,不區分完整壓實與尾部壓實。 - 記錄訊息包含關於壓縮模式的相關資訊。 例如,當「線上修訂清除」啟動時,對應的記錄訊息會指出壓縮模式。 此外,在某些角落情況下,當計畫運行尾部壓縮時,系統將恢復為完全壓縮,日誌消息將指示此更改。 以下的日誌樣本指示壓實模式以及從尾部到完全壓實的變化:
TarMK GC: running tail compaction
TarMK GC: no base state available, running full compaction instead
已知限制 known-limitations
在某些情況下,尾部和完全壓實模式之間的交替會延遲清理過程。 更準確地說,完整壓縮後,存放庫將會增加(其大小會翻倍)。 當存放庫將降至預先完全壓縮大小以下時,額外的空間將會在後續的尾部壓縮中回收。 還應避免並行維護任務執行。
建議將磁碟的大小至少比最初估計的儲存庫大小大兩三倍。
線上修訂清除常見問題 online-revision-cleanup-frequently-asked-questions
AEM 6.4升級考量事項 aem-upgrade-considerations
移轉至Oak Segment Tar migrating-to-oak-segment-tar
執行線上修訂清除 running-online-revision-cleanup
監控線上修訂清除 monitoring-online-revision-cleanup
疑難排解線上修訂清除 troubleshooting-online-revision-cleanup
根據錯誤訊息進行疑難排解 troubleshooting-based-on-error-messages
如果線上修訂清除過程中發生事件,error.log將是詳細的。 下列矩陣旨在說明最常見的訊息並提供可能的解決方案:
如何執行離線修訂清除 how-to-run-offline-revision-cleanup
-
適用於Oak版本 1.0.0 - 1.0.11 或 1.1.0 - 1.1.6,使用Oak-run版本 1.0.11
-
適用於Oak版本 較上文更新,請使用符合AEM安裝之Oak核心的Oak-run版本。
Adobe提供以下工具: Oak-run 用於執行修訂清除。 可在下列位置下載:
https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/
此工具是可執行的Jar,可手動執行以壓縮存放庫。 此程式稱為離線修訂清除,因為必須關閉存放庫才能正確執行工具。 請務必根據您的維護時段規劃清理。
有關如何提高清理過程效能的提示,請參閱 提高離線修訂清除的效能.
-
請務必確認您最近有AEM例項的備份。
關閉AEM。
-
(選用)使用工具尋找舊查核點:
code language-xml java -jar oak-run.jar checkpoints install-folder/crx-quickstart/repository/segmentstore
-
(選用)然後,刪除未參考的查核點:
code language-xml java -jar oak-run.jar checkpoints install-folder/crx-quickstart/repository/segmentstore rm-unreferenced
-
執行壓縮並等待它完成:
code language-xml java -jar -Dsun.arch.data.model=32 oak-run.jar compact install-folder/crx-quickstart/repository/segmentstore
提高離線修訂清除的效能 increasing-the-performance-of-offline-revision-cleanup
oak-run工具引入多項功能,旨在提升修訂清除程式的效能,並盡可能降低維護期間。
此清單包含數個命令列參數,如下所述:
-
-mmap。 您可以將此值設為true或false。 如果設為true,則使用記憶體映射訪問。 若設為false,則會使用檔案存取。 如果未指定,則64位系統上將使用記憶體映射訪問,32位系統上使用檔案訪問。 在Windows上,一律會強制執行一般檔案存取,並忽略此選項。 此參數已取代 — Dtar.memoryMapped參數。
-
-Dupdate.limit. 定義臨時事務到磁碟的刷新閾值。 預設值為 10000。
-
-Dcompress-interval. 要保留直到壓縮當前映射為止的壓縮映射條目數。 預設為1000000。 如果有足夠的堆記憶體可用,則應將此值增加到更高的數字,以加快吞吐量。 此參數已在Oak 1.6版中移除,且無效。
-
-Dcompaction-progress-log. 要記錄的壓縮節點數。 預設值為150000,這表示在操作期間將記錄150000個壓縮的節點。 請結合下列說明的下一個參數使用。
-
-Dtar.PersistCompactionMap。 將此參數設為true ,以使用磁碟空間而非堆記憶體來保存壓縮映射。 需要oak-run工具 版本1.4 更高。 欲知更多詳情,請參閱 離線修訂清除常見問題 區段。 此參數已在Oak 1.6版中移除,且無效。
-
— 力。 強制壓縮並忽略非相符區段存放區版本。
--force
參數會將區段存放區升級至最新版本,與舊版Oak不相容。 此外,考慮到不可能降級。 一般來說,您應該小心使用這些參數,而且只有在您對如何使用這些參數有知識時才使用。使用中參數的範例:
java -Dupdate.limit=10000 -Dcompaction-progress-log=150000 -Dlogback.configurationFile=logback.xml -Xmx8g -jar oak-run-*.jar checkpoints <repository>
觸發修訂清除的其他方法 additional-methods-of-triggering-revision-cleanup
除了上述方法,您也可以使用JMX控制台觸發修訂清除機制,如下所示:
- 開啟JMX控制台,請前往 http://localhost:4502/system/console/jmx
- 按一下 RevisionGarbageCollection MBean。
- 在下一個視窗中,按一下 startRevisionGC() 然後 叫用 以啟動修訂垃圾收集作業。