修訂清除 revision-cleanup
簡介 introduction
存放庫的每次更新都會建立內容修訂版本。 因此,每次更新後,存放庫的大小都會增加。 必須清理舊修訂版本以釋放磁碟資源 — 這對於避免不受控制的存放庫成長很重要。 此維護功能稱為「修訂清除」。 自Adobe Experience Manager (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 Author和Publish執行個體上自動執行一次。 您只需在使用者活動最少的期間定義維護時段。 您可以依照下列方式設定「線上修訂清除」工作:
-
在主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
修訂清除程式會依層代回收舊修訂版本。 這表示每次您執行修訂清除時,都會建立新一代並保留在磁碟上。 不過,這兩種修訂清除型別之間有所差異:離線修訂清除會保留一代,而線上修訂清除則會保留兩代。 因此,當您執行線上修訂清除 後 離線修訂清除時,會發生下列情況:
- 第一次線上修訂清除執行後,存放庫大小會翻倍。 發生此狀況是因為磁碟目前保留了兩代磁碟。
- 在後續執行期間,存放庫會在建立新一代時暫時成長,然後穩定回至第一次執行後的大小,因為線上修訂清除程式會回收前一代版本。
此外,請記住,根據認可型別和數量的不同,每一代都可以和上一代相比有不同的大小,因此最終大小會因執行而異。
因此,建議將磁碟大小至少比最初估計的存放庫大小大兩到三倍。
完整和尾部壓縮模式 full-and-tail-compaction-modes
AEM 6.5 為線上修訂清除程式的 壓縮 階段引入 兩種新模式:
- 完整壓縮 模式會重寫整個存放庫中的所有區段和tar檔案。 因此,後續的清理階段可以移除整個存放庫的最大資源量。 因為完整壓縮會影響整個存放庫,所以需要相當多的系統資源與時間才能完成。 完全壓縮對應於AEM 6.3中的壓縮階段。
- 尾部壓縮 模式只會重寫存放庫中最近的區段和tar檔案。 最新的區段和tar檔案是上次執行完整或尾部壓縮後新增的區段。 因此,後續的清理階段只能移除存放庫最近部分中所包含的垃圾。 由於尾部壓縮只會影響存放庫的一部分,因此它比完全壓縮需要更少的系統資源和完成時間。
這些壓縮模式構成效率與資源消耗之間的權衡:尾端壓縮的效果較低,對正常系統作業的影響也較小。 相較之下,完全壓縮的效果較佳,但對系統正常運作的影響較大。
AEM 6.5在壓縮期間也引進了更有效率的內容重複資料刪除機制,進一步減少存放庫在磁碟上的空間。
以下兩張圖表呈現內部實驗室測試的結果,其中說明AEM 6.5與AEM 6.3相比可縮短平均執行時間以及磁碟平均佔用空間:
如何設定完全和尾部壓縮 how-to-configure-full-and-tail-compaction
預設設定會在工作日執行尾部壓縮,並在週日執行完全壓縮。 可以使用RevisionCleanupTask
維護任務的新組態值full.gc.days
來變更預設組態。
當您設定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.5升級考量事項 aem-upgrade-considerations
移轉至Oak 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
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 — 間隔。 壓縮目前對應之前要保留的壓縮對應專案數。 預設值為1000000。 如果有足夠的棧積記憶體可用,您應該將此值增加到更高的數目,以加快輸送量。 此引數已在Oak 1.6版中移除,因此無效。
-
-Dcompaction-progress-log。 記錄的壓縮節點數。 預設值為150000,這表示在作業期間會記錄前150000個壓縮的節點。 將此與以下記錄的下一個引數一起使用。
-
-Dtar.PersistCompactionMap。 將此引數設定為True會使用磁碟空間而非棧積記憶體來儲存壓縮對應。 需要Oak-run工具 版本1.4 和更新版本。 如需詳細資訊,請參閱離線修訂清除常見問題區段中的問題3。 此引數已在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主控台來觸發修訂清除機制,如下所示:
- 前往http://localhost:4502/system/console/jmx開啟JMX主控台
- 按一下 RevisionGarbageCollection MBean。
- 在下一個視窗中,按一下 startRevisionGC(),然後按一下 Invoke 以啟動修訂垃圾收藏集工作。