修訂清除 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執行個體上自動執行一次。 您只需在使用者活動最少的期間定義維護時段。 您可以依照下列方式設定「線上修訂清除」工作:

  1. 在主AEM視窗中,移至​ 工具 — 作業 — 儀表板 — 維護,或將瀏覽器指向: https://serveraddress:serverport/libs/granite/operations/content/maintenance.html

    chlimage_1-90

  2. 將游標暫留在​ 每日維護期間 ​上,然後按一下​ 設定 ​圖示。

    chlimage_1-91

  3. 輸入需要的值(週期、開始時間、結束時間),然後按一下​ 儲存

    chlimage_1-92

或者,如果要手動執行修訂清除工作,您可以:

  1. 移至​ 工具 — 作業 — 儀表板 — 維護,或直接瀏覽至https://serveraddress:serverport/libs/granite/operations/content/maintenance.html

  2. 按一下​ 每日維護期間

  3. 將游標暫留在​ 修訂清理 ​圖示上。

  4. 按一下​ 執行

    chlimage_1-93

離線修訂清除後執行線上修訂清除 running-online-revision-cleanup-after-offline-revision-cleanup

修訂清除程式會依層代回收舊修訂版本。 這表示每次您執行修訂清除時,都會建立新一代並保留在磁碟上。 不過,這兩種修訂清除型別之間有所差異:離線修訂清除會保留一代,而線上修訂清除則會保留兩代。 因此,當您執行線上修訂清除​ ​離線修訂清除時,會發生下列情況:

  1. 第一次線上修訂清除執行後,存放庫大小會翻倍。 發生此狀況是因為磁碟目前保留了兩代磁碟。
  2. 在後續執行期間,存放庫會在建立新一代時暫時成長,然後穩定回至第一次執行後的大小,因為線上修訂清除程式會回收前一代版本。

此外,請記住,根據認可型別和數量的不同,每一代都可以和上一代相比有不同的大小,因此最終大小會因執行而異。

因此,建議將磁碟大小至少比最初估計的存放庫大小大兩到三倍。

完整和尾部壓縮模式 full-and-tail-compaction-modes

AEM 6.5 ​為線上修訂清除程式的​ 壓縮 ​階段引入​ 兩種新模式

  • 完整壓縮 ​模式會重寫整個存放庫中的所有區段和tar檔案。 因此,後續的清理階段可以移除整個存放庫的最大資源量。 因為完整壓縮會影響整個存放庫,所以需要相當多的系統資源與時間才能完成。 完全壓縮對應於AEM 6.3中的壓縮階段。
  • 尾部壓縮 ​模式只會重寫存放庫中最近的區段和tar檔案。 最新的區段和tar檔案是上次執行完整或尾部壓縮後新增的區段。 因此,後續的清理階段只能移除存放庫最近部分中所包含的垃圾。 由於尾部壓縮只會影響存放庫的一部分,因此它比完全壓縮需要更少的系統資源和完成時間。

這些壓縮模式構成效率與資源消耗之間的權衡:尾端壓縮的效果較低,對正常系統作業的影響也較小。 相較之下,完全壓縮的效果較佳,但對系統正常運作的影響較大。

AEM 6.5在壓縮期間也引進了更有效率的內容重複資料刪除機制,進一步減少存放庫在磁碟上的空間。

以下兩張圖表呈現內部實驗室測試的結果,其中說明AEM 6.5與AEM 6.3相比可縮短平均執行時間以及磁碟平均佔用空間:

onrc-duration-6_4vs63 segmentstore-6_4vs63

如何設定完全和尾部壓縮 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

問題
答案
升級至AEM 6.5時應該注意什麼?

TarMK的持續性格式會隨著AEM 6.5而改變。這些變更不需要主動式移轉步驟。 現有存放庫會進行滾動式移轉,對使用者而言是透明的。 AEM 6.5 (或相關工具)首次存取存放庫時,就會起始移轉程式。

一旦開始移轉至AEM 6.5持續性格式,存放庫就無法恢復為先前的AEM 6.3持續性格式。

移轉至Oak Tar區段 migrating-to-oak-segment-tar

問題
答案
為什麼我需要移轉存放庫?

在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會導致容器格式發生變更。 包含的資料不受影響,且不會修改。
如何以最佳方式計算移轉期間和之後所需的預期磁碟空間?
移轉等同於以新格式重新建立區段存放區。 這可用來估計移轉期間所需的額外磁碟空間。 移轉後,可以刪除舊區段存放區以回收空間。
如何最好地估計移轉的持續時間?
如果在移轉之前執行離線修訂清理,即可大幅改善移轉效能。 建議所有客戶在升級程式前先執行此作業。 一般而言,移轉的持續時間應與離線修訂清除工作的持續時間類似,假設離線修訂清除工作已在移轉之前執行。

正在執行線上修訂清除 running-online-revision-cleanup

問題
答案
線上修訂清除應該多久執行一次?
一天一次。 這是「操作控制面板」中的預設設定。
如何設定線上修訂清除維護任務的開始時間?
請參閱如何執行線上修訂清除區段。
是否有線上修訂清除不應超過的最大頻率?
建議每天執行一次線上修訂清理,預設為設定。
決定線上修訂清除執行頻率的主要指標為何?
不需要判斷頻率,因為「線上修訂清除」已設定為維護工作,且每天都會自動執行。
第一次執行線上修訂清除時,為何無法回收任何空間?
線上修訂清除會依層代回收舊修訂版本。 每次執行修訂清除時都會產生全新的產生。 只有至少兩代的內容才會被回收,這表示在第一次執行時沒有可回收的內容。
為何第一次線上修訂清除在離線修訂清除後執行時,無法回收任何空間?

離線修訂清除正在回收除了最新世代以外的所有專案,相較於線上修訂清除的最新兩代。 如果有新的存放庫,「線上修訂清除」在離線修訂清除後第一次執行時,將不會回收任何空間,因為沒有足夠老的層代可回收。

另請閱讀本章的「離線修訂清除後執行線上修訂清除」一節

Author和Publish通常會有不同的「線上修訂清除」視窗嗎?
這取決於營業時間和客戶線上狀態的流量模式。 維護時段應在主要生產時間之外設定,以實現最佳清理功效。 若為多個AEM Publish執行個體(TarMK陣列),線上修訂清除的維護時段應分批進行。
執行線上修訂清除之前是否有任何先決條件?
線上修訂清除僅適用於AEM 6.3及更高版本。 此外,如果您使用舊版AEM,則必須移轉至新的Oak區段Tar
決定「線上修訂清除」持續時間的因素為何?

因子為:

  • 存放庫大小
  • 在系統上載入(每分鐘的要求數,特別是寫入作業)
  • 活動模式(讀取與寫入)
  • 硬體規格(CPU效能、記憶體、IOPS)
執行「線上修訂清除」時,作者是否仍可繼續工作?
可以,「線上修訂清除」可處理同時寫入。 不過,「線上修訂清除」可以更快且更有效率地運作,而不需要同時執行寫入異動。 Adobe建議將「線上修訂清除」維護作業排程至相對安靜的時間,不會有太多流量。
執行「線上修訂清除」時,磁碟空間和棧積記憶體的最低需求為何?

線上修訂清除期間會持續監視磁碟空間。 如果可用磁碟空間下降到臨界值以下,則會取消此程式。 關鍵值是存放庫目前磁碟空間的25%,且無法設定。

Adobe建議您讓磁碟的大小至少比最初估計的存放庫大小大兩到三倍。

在清理程式期間,會持續監視可用棧積空間。 如果可用棧積空間下降到關鍵值以下,則會取消此程式。 臨界值是透過org.apache.jackrabbit.oak.segment.SegmentNodeStoreService#MEMORY_THRESHOLD設定。 預設值為15%。

Recommendations的最小壓縮棧積大小建議與AEM記憶體大小建議沒有區分。 一般: 如果AEM執行個體的大小足以處理使用案例及其預期的裝載,則清理程式會取得足夠的記憶體。

執行「線上修訂清除」時,預期的效能影響為何?
線上修訂清除」是背景程式,可同時讀取和寫入存放庫以進行正常的系統作業。 尤其是,它可能需要在短時間內獲得對存放庫的獨佔存取權,以防止其他對話串寫入存放庫。
線上修訂清除預計要執行多久?
根據內部執行的最新效能測試Adobe,執行時間不應超過兩個小時。
如果線上修訂清除需要更長的時間,該怎麼做?
  • 確定它每天執行。
  • 確保在最小儲存庫活動期間執行,方法是相應地在Operations Dashboard中設定維護時段。
  • 擴充系統資源(CPU、記憶體、I/O)。
如果線上修訂清除超過設定的維護期間,會發生什麼情況?
請確定其他維護任務沒有延遲執行。 如果在同一個維護時段內執行比「線上修訂清除」更多的維護任務,就可能會發生這種情況。 維護任務會依序執行,而不會依可設定的順序。
為何略過修訂記憶體回收?

修訂清除依賴估計階段來決定是否有足夠的垃圾要清除。 估算程式會比較目前的大小與上次壓縮後的存放庫大小。 如果大小超過設定的差異,則會執行清理。 大小差異設定為1 GB。 這實際上表示,如果存放庫大小自上次清除執行以來未增加1 GB,則會略過新的修訂清除疊代。

以下為預估階段的相關記錄專案:

  • 修訂GC執行: 大小差異為N%或N/N (N/N位元組),因此執行壓縮
  • 修訂GC 執行: 大小差異為N%或N/N (N/N位元組),因此現在將略過壓縮
如果效能影響太大,是否可以安全地中止自動壓縮?
可以。自AEM 6.3起,您可以透過「操作控制面板」內的「維護工作視窗」或透過JMX安全地停止它。
如果AEM執行個體在排定的清理工作期間關閉,處理程式是否會安全地中止,或是在壓縮完成前封鎖關機?
修訂清除會中斷,存放庫會安全地關閉。
當系統線上上修訂清除期間當機時,會發生什麼情況?
在這種情況下,沒有資料損毀的風險。 後續執行會清理記憶體剩餘專案。
未執行線上修訂清除會有什麼影響?
效能會隨著時間降低。
正在收集哪些修訂版本?
依預設,「線上修訂清除」只會收集至少24小時之前的修訂版本。
如果同時寫入存放庫時發生太多干擾,會發生什麼情況?

如果系統上存在寫入並行,線上修訂清除可能需要獨佔寫入存取權,才能在壓縮週期結束時確認變更。 系統進入 forceCompact模式,如Oak檔案的詳細說明。 在強制壓縮期間,會取得獨佔寫入鎖定,以最終認可變更,而不受任何並行寫入干擾。 若要限制對回應時間的影響,可定義逾時值。 此值預設為一分鐘,這表示如果強制壓縮未在一分鐘內完成,壓縮程式將中止,以支援同時提交。

強制壓縮的持續時間取決於以下因素:

  • 硬體:尤其是IOPS。 持續時間會隨著IOPS的增加而減少。
  • 區段存放區大小:持續時間會隨著區段存放區的大小而增加。
待命執行個體上如何執行線上修訂清除?

在冷待命設定中,只有主要執行個體必須設定為執行「線上修訂清除」。 在待命執行個體上,不需要特別排定「線上修訂清除」。

待命執行個體上的對應作業是「自動清除」 — 這對應於「線上修訂清除」的清除階段。 在主要執行個體上執行「線上修訂清除」後,在待命執行個體上執行「自動清除」。

預估和壓縮階段不會在待命執行個體上執行。

離線修訂清除是否比線上修訂清除能釋放更多磁碟空間?

離線修訂清除可以立即移除舊修訂版本,而線上修訂清除必須說明應用程式棧疊仍在參考的舊修訂版本。 因此,前者可以比後者更積極地移除垃圾,其效果會透過幾個垃圾收集週期進行攤銷。

另請閱讀本章的「離線修訂清除後執行線上修訂清除」一節

有關記憶體對應檔案作業的任何考量事項?
  • 在Windows環境 上,一律會強制執行一般檔案存取,因此不會使用記憶體對應存取。 一般建議是,所有可用的RAM都應該配置給棧積,並且應該增加segmentCache大小。 您可以將segmentCache.size選項新增至org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config (例如segmentCache.size=20480)以增加segmentCache。 請記得為作業系統和其他處理序省略一些RAM。
  • 在非Windows環境中,請增加實體記憶體的大小以改善存放庫的記憶體對應。

監視線上修訂清除 monitoring-online-revision-cleanup

線上修訂清除期間必須監視哪些專案?
  • 啟用[線上修訂清除]時,應該監視磁碟空間。 當磁碟空間不足時,清理不會執行或會先佔終止。
  • 檢查線上修訂清除的完成時間記錄。 此過程不應超過2小時。
  • 查核點數目。 如果在壓縮執行時有3個以上的查核點,建議清理查核點。
如何檢查線上修訂清除是否已成功完成?

您可以透過檢查記錄來檢查線上修訂清除是否已成功完成。

例如,「TarMK GC #{}: compaction completed in {} ({} ms), after {} cycles」表示壓縮步驟已成功完成,除非在訊息「TarMK GC #{}: compaction gave up compacting concurrent commits after {} cycles」之前,這表示有太多同時載入。

相應地,出現訊息"TarMK GC #{}: cleanup completed in {} ({} ms"表示清理步驟成功完成。

我們可以在哪裡找到上次線上修訂清除執行的統計資料?

透過JMX (SegmentRevisionGarbageCollection MBean)公開狀態、進度和統計資料。 如需SegmentRevisionGarbageCollection MBean的詳細資訊,請閱讀段落後面的

可透過EstimatedRevisionGCCompletion SegmentRevisionGarbageCollection MBean.

您可以使用ObjectName org.apache.jackrabbit.oak:name="Segment node store revision garbage collection",type="SegmentRevisionGarbageCollection"取得MBean的參考。

統計資料僅自上次系統啟動後提供。外部監視工具可用來保留超過AEM運作時間的資料。

哪些是相關的記錄專案?
  • 線上修訂清除已開始/停止
    • 「線上修訂清除」由三個階段組成:估算、壓縮和清除。 如果存放庫未包含足夠的記憶體,預估可能會強制略過壓縮和清理。 在最新版的AEM中,訊息"TarMK GC #{}: estimation started"會標籤預估的開頭,"TarMK GC #{}: compaction started, strategy={}"會標籤壓縮的開頭,而"TarMK GC #{}: cleanup started. Current repository size is {} ({} bytes"會標籤清除的開頭。
  • 修訂清除取得的磁碟空間
    • 只有在清理階段完成時,才會回收空間。 清理階段的完成會以記錄訊息「TarMK GC #{}: cleanup completed in {} ({} ms」標示。 Post清理大小為{} ({}位元組),已回收空間{} ({}位元組)。 壓縮地圖寬度/深度為{}/{} ({}位元組/{})。」
  • 修訂清除期間發生問題
    • 有許多失敗情況,所有情況都標有「TarMK GC」開頭的WARN或ERROR記錄訊息。

另請參閱下面的根據錯誤訊息進行疑難排解一節。

如何檢查完成線上修訂清除後,已回收多少空間?
在清理週期結束時,記錄檔中有一則訊息: "TarMK GC #3: cleanup completed"包含存放庫的大小和回收的垃圾量。
線上修訂清除完成後,如何檢查存放庫的完整性?

線上修訂清除後不需要進行存放庫完整性檢查。

不過,您可以執行下列動作,在清除後檢查存放庫狀態:

  • 存放庫周遊檢查
  • 在清理程式完成後,使用Oak-run工具來檢查是否不一致。 如需如何執行此動作的詳細資訊,請檢視Apache檔案。您不需要關閉AEM即可執行工具。
如何偵測線上修訂清除是否失敗,以及復原的步驟為何?
失敗情況會以「TarMK GC」開頭的WARN或ERROR記錄訊息標示。 另請參閱下面的根據錯誤訊息進行疑難排解一節。
修訂清理健康狀態檢查中會公開哪些資訊? 它們如何以及何時對顏色編碼狀態層級作出貢獻?

修訂清理健康狀態檢查是操作儀表板.
的一部分

如果上次執行線上修訂清除維護工作已順利完成,則狀態為 綠色

如果線上修訂清除維護工作取消一次,則為 黃色

如果線上修訂清除維護工作連續取消三次,則為 RED在此情況下需要手動互動,否則線上修訂清除可能會再次失敗。 如需詳細資訊,請閱讀下面的疑難排解區段。

此外,系統重新啟動後,也會重設健康狀態檢查狀態。 因此,新重新啟動的執行個體會在修訂清理健康情況檢查中顯示綠色狀態。 外部監視工具可用來保留超過AEM運作時間的資料。

如何在待命執行個體上監視自動清除?

使用SegmentRevisionGarbageCollection MBean透過JMX公開狀態、進度和統計資料。 另請參閱下列Oak檔案

您可以使用ObjectName org.apache.jackrabbit.oak:name="Segment node store revision garbage collection",type="SegmentRevisionGarbageCollection"取得MBean的參考。

統計資料只能從上次系統啟動後使用。 外部監視工具可用來保留超過AEM運作時間的資料。

記錄檔也可用來檢查自動清理的狀態、進度和統計資料。

在待命執行個體的自動清理期間必須監視哪些專案?
  • 執行自動清理時,應該監視磁碟空間。
  • 完成時間(透過記錄檔)以確保不會超過2小時。
  • 執行自動清理後的區段存放區大小。 待命執行個體上的區段存放區大小應該與主要執行個體上的區段存放區大致相同。

疑難排解線上修訂清除 troubleshooting-online-revision-cleanup

如果不執行「線上修訂清除」,可能會發生什麼最壞的情況?
AEM執行個體的磁碟空間用完,而造成生產中斷。
在發佈執行個體上執行線上修訂清理時,高使用者流量是否有問題?
高使用者流量會影響壓縮階段是否能夠成功完成。
根據健康狀態檢查與記錄專案,線上修訂清除連續三次未順利完成。 需要什麼才能讓線上修訂清除順利完成?

您可以執行數個步驟來尋找及修正問題:

  • 首先,檢查記錄專案

  • 根據記錄中的資訊,採取適當的動作:

    • 如果記錄顯示錯過5個壓縮週期並在forceCompact週期逾時,請將維護期間排程為存放庫寫入量低時的安靜時間。 您可以在 https://serveraddress:serverport/libs/granite/operations/content/monitoring/page.html 的存放庫度量監視工具中檢查存放庫寫入
    • 如果清理在維護時段結束時停止,請確定維護任務使用者介面中的維護時段設定夠大
    • 如果可用的棧積記憶體不足,請確定執行個體有足夠的記憶體。
    • 如果反應較晚,區段存放區可能會增長太多,以致於線上修訂清除(即使在較長的維護期間內)無法完成。 例如,如果上週未成功完成線上修訂清除,則建議規劃離線維護,並執行離線修訂清除,將區段存放區恢復到可管理的大小。
Healthcheck警示開啟時必須執行什麼動作?
請參閱上一點。
如果「線上修訂清除」在排程的維護期間逾時,會發生什麼情況?
線上修訂清除」已取消,且剩餘的專案已移除。 下次排定維護期間時,它會再次開始。
導致SegmentNotFoundException執行個體登入error.log的原因是什麼?如何復原?

TarMK嘗試存取它找不到之儲存單位(區段)時,會記錄SegmentNotFoundException。 有三種情況可能會導致此問題:

  1. 一種應用程式,可繞過建議的存取機制(例如Sling和JCR API),使用較低層級的API/SPI來存取存放庫,然後超過區段的保留時間。 也就是說,它會保留一個實體的參照,保留時間超過線上修訂清除(預設為24小時)所允許的保留時間。 此案例為暫時性,不會導致資料損毀。 若要復原,應使用Oak-run工具來確認例外狀況的暫時性(Oak-run檢查不應報告任何錯誤)。 若要這麼做,執行個體必須離線並稍後重新啟動。
  2. 外部事件造成磁碟上的資料損毀。 這可能是磁碟故障、磁碟空間不足或意外修改所需資料檔案所致。 在此情況下,執行個體必須離線並使用Oak-run檢查進行修復。 如需如何執行Oak-run檢查的詳細資訊,請閱讀下列Apache檔案
  3. 透過Adobe客戶服務處理所有其他發生的問題。

根據錯誤訊息進行疑難排解 troubleshooting-based-on-error-messages

如果線上上修訂清除程式期間發生事件,則error.log為詳細資訊。 下列矩陣旨在說明最常見的訊息,並提供可能的解決方案:

階段
記錄訊息
解釋
後續步驟
預估
TarMK GC #2:估算已略過,因為壓縮已暫停。
當設定在系統上停用壓縮時,會略過預估階段。
啟用線上修訂清除。
不適用
TarMK GC #2:估計已中斷: ${REASON}。 正在跳過壓縮。
預估階段提前結束。 可能中斷估計階段的一些事件範例:主機系統上的記憶體或磁碟空間不足。
取決於特定原因。
壓縮
TarMK GC #2:壓縮已暫停。
只要壓縮階段由設定暫停,預估階段和壓縮階段都不會執行。
啟用線上修訂清除。
不適用
TarMK GC #2:壓縮已取消: ${REASON}。
壓縮階段提前結束。 可能中斷壓縮階段的一些事件範例:主機系統上的記憶體或磁碟空間不足。 此外,也可以透過關閉系統或透過管理介面(例如作業儀表板內的維護視窗)明確取消壓縮來取消壓縮。
取決於特定原因。
不適用
TarMK GC #2:5次循環後32.902分鐘(1974140毫秒)內壓實失敗。
此訊息並不表示發生無法復原的錯誤,只表示某些嘗試後壓縮已終止。 另請閱讀下列段落。
閱讀下列Oak檔案,以及「執行中的線上修訂清除」章節的最後一個問題。
清理
TarMK GC #2:清理已中斷。
已透過關閉存放庫來取消清理。 預期一致性不受影響。 此外,磁碟空間很可能無法完全回收。 它將在下一個修訂版清除週期中回收。
調查存放庫被關閉的原因,並往後嘗試避免在維護期間關閉存放庫。

如何執行離線修訂清除 how-to-run-offline-revision-cleanup

CAUTION
請使用與AEM安裝的Oak核心版本相符的Oak執行工具發行版本(主要和次要)。 例如,如果您的AEM執行個體有Oak核心版本1.22.x,您應使用最新版本的Oak執行工具1.22.x。

Adobe提供名為​ Oak-run ​的工具,以執行修訂清除。 您可在下列位置下載:

https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/

此工具是可執行的jar,可以手動執行以壓縮存放庫。 此程式稱為離線修訂清除,因為必須關閉存放庫才能正確執行工具。 請務必根據您的維護期間規劃清理。

如需有關如何提高畫質除程式效能的秘訣,請參閱提高離線修訂清除的效能

NOTE
您也可以在進行維護之前清除舊的查核點(以下程式中的步驟2和3)。 建議僅在執行個體超過100個查核點時採取此做法。
  1. 請一律確定您有AEM執行個體最近的備份。

    關閉AEM。

  2. (選用)使用工具尋找舊查核點:

    code language-xml
    java -jar oak-run.jar checkpoints install-folder/crx-quickstart/repository/segmentstore
    
  3. (選用)然後,刪除未參考的查核點:

    code language-xml
    java -jar oak-run.jar checkpoints install-folder/crx-quickstart/repository/segmentstore rm-unreferenced
    
  4. 執行壓縮並等待它完成:

    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版中移除,因此無效。

  • — 強制。 ​強制壓縮並忽略不相符的區段存放區版本。

CAUTION
使用--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主控台來觸發修訂清除機制,如下所示:

  1. 前往http://localhost:4502/system/console/jmx開啟JMX主控台
  2. 按一下​ RevisionGarbageCollection MBean。
  3. 在下一個視窗中,按一下​ startRevisionGC(),然後按一下​ Invoke ​以啟動修訂垃圾收藏集工作。

離線修訂清理常見問題 offline-revision-cleanup-frequently-asked-questions

決定離線修訂清除持續時間的因素為何?
存放庫大小和必須清除的修訂數量會決定清除的持續時間。
修訂版本和頁面版本之間有何差異?
  • Oak修訂版本: Oak會以包含節點和屬性的大型樹狀階層組織所有內容。 此內容樹狀結構的每個快照或修訂版本都是不可變的,而且樹狀結構的變更會以新修訂版本的順序表示。 通常,每個內容修改都會觸發新的修訂。 另請參閱關注連結
  • 頁面版本: 版本設定功能會在特定時間點建立頁面的「快照」。 通常,新版本會在頁面啟動時建立。 如需詳細資訊,請參閱使用頁面版本
如果「離線修訂清除」任務未在8小時內完成,應如何加速該任務?
如果修訂工作未在8小時內完成,且執行緒傾印顯示主要熱點為InMemoryCompactionMap.findEntry,請將下列引數與Oak-run工具 版本1.4 或更新版本搭配使用: -Dtar.PersistCompactionMap=true。 已在Oak 1.6版中移除-Dtar.PersistCompactionMap引數。
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2