解決AEM 6.5 (Forms和其他解決方案)中Groovy Console稽核追蹤所導致的區段商店增長問題

如果您的AEM 6.5內部部署或AMS環境顯示突然的磁碟尖峰和快速成長的TarMK區段存放區,則高頻率的Groovy Console工作可能會在/var/groovyconsole/audit下建立大型稽核軌跡節點。 在AEM Forms環境中可觀察到這種情況,但在使用Groovy Console的任何AEM 6.5 TarMK設定中都會發生。
本文說明如何識別違規工作、安全地移除其稽核節點,以及透過在區段存放區上執行離線壓縮來回收磁碟空間。

注意:此案例涉及自訂Groovy主控台指令碼和稽核軌跡。 Groovy Console是協力廠商/社群工具,不屬於標準AEM產品。

說明 description

環境

  • 產品: Adobe Experience Manager (AEM) 6.5 (包括AEM Forms)
  • 版本: 6.5部署:內部部署或Adobe Managed Services (AMS)持續性:TarMK含segmentstore
  • 作業系統:Linux或Windows

附註:

  • 在AEM Forms環境中發現上述問題,但在使用Groovy Console的任何AEM 6.5 TarMK設定中都可能會發生。
  • 此程式不適用於AEM as a Cloud Service,因為使用者沒有區段存放區的檔案系統層級存取權。

問題/症狀

在Adobe Experience Manager (AEM) 6.5 Forms內部部署或Adobe Managed Services (AMS)生產環境中,磁碟使用量會突然急速增加。 crx-quickstart/repository/segmentstore目錄會在數天內快速成長,並達到數百GB。 線上修訂清除執行,但無法回收空間。 近期沒有部署或設定變更可以解釋這種成長。

在分析期間,發現下列症狀:

  • crx-quickstart/repository/segmentstore會快速成長至數十或數百個GB。
  • 磁碟使用量會在短時間內達到尖峰,通常是在週末或下班時。
  • 線上修訂清除執行,但不會大幅減少區段存放區大小。
  • 在成長期間,沒有應用程式部署或設定變更。
  • /var/groovyconsole/audit/user/<year>下有許多稽核節點,由Groovy Console排程工作建立,每兩分鐘執行一次。

調查顯示自訂Groovy Console工作(排程為每隔幾分鐘執行)會在特定使用者和年份的路徑(例如/var/groovyconsole/audit/user/<year>)下寫入大型稽核軌跡專案。 這些稽核節點會導致存放庫膨脹,並促使區段存放區成長。

解決方法 resolution

步驟1:識別產生稽核軌跡的Groovy Console工作

  1. 在受影響的AEM Forms執行個體上開啟CRXDE Lite。
  2. 瀏覽至儲存現有Groovy Console工作的節點,例如/var/groovyconsole底下。
  3. 尋找具有短間隔cron運算式的現有工作,例如0 0/2 * * * ?,每兩分鐘執行一次。

如需相關步驟,請參閱AEM as a Cloud Service使用手冊中的使用CRXDE Lite。 典型的工作節點包含類似下列的屬性:

  • jobTitle = Remove Old File Attachments
  • cronExpression = 0 0/2 * * * ? (每2分鐘執行一次)
  • scheduledJobId = <job-id>
  • script = <groovy-script-body>
  • output = <summary-of-job-output>

如果這些工作只產生稽核記錄,而沒有關鍵業務內容,您可以安全地清理其稽核節點,並調整或移除排程以防止進一步快速增長。 如需相關步驟,請參閱AEM 6中的稽核記錄維護。

步驟2:清除Groovy主控台稽核節點

若要減少存放庫大小,請移除/var/groovyconsole/audit/user/<year>下累積的稽核節點。 使用隨選Groovy Console指令碼,而非新的排程工作,以避免進一步成長。

重要:在生產系統上使用Groovy Console時請務必謹慎。 一律先在較低的環境中測試指令碼,驗證目標路徑,並在適當的變更管理程式下執行。 如需相關步驟,請參閱AEM 6.5使用指南中的AEM 6稽核記錄維護。

在此案例中,成長來自Groovy Console稽核軌跡節點,位於特定使用者和年份的路徑下,例如:

/var/groovyconsole/audit/user/<year>

此路徑僅包含Groovy Console作業的稽核資料,且可安全移除。 調整路徑中的年份區段以符合您的環境。

Groovy主控台指令碼範例:

import javax.jcr.Session

// Adjust this path to the correct audit root for your environment.
// Example: "/var/groovyconsole/audit/user/<year>"
def path = "/var/groovyconsole/audit/user/<year>"

Session s = session  // Groovy Console injects a live JCR session

if (s.nodeExists(path)) {
    s.getNode(path).remove()
    s.save()
    println "Removed audit nodes under " + path
} else {
    println "No audit nodes to remove at " + path
}

使用具有足夠許可權可移除/var/groovyconsole/audit/user/<year>下節點的使用者帳戶在生產環境中執行一次指令碼。 在許多環境中,這是管理員或服務使用者,但確切的許可權取決於您的內部安全性模式。

指令碼完成後,在CRXDE Lite中確認稽核節點已移除,並確認Groovy主控台工作不再執行或以較不嚴格的排程和最低記錄執行。

步驟3:排程離線壓縮的停機時間與備份

  1. 在非上班時間規劃維護期間。
  2. 顯示維護頁面,或視需要使用現有的作業程式來封鎖使用者存取。
  3. 繼續之前,請先建立執行個體的完整備份(包括AEM安裝目錄和資料存放區)。離線壓縮會變更磁碟上的存放庫,而且無法輕易回覆。 如需相關步驟,請參閱監視和維護您的Adobe Experience Manager執行個體中的備份
  4. 徹底停止AEM Forms執行個體。

步驟4:在區段存放區上執行離線修訂壓縮

如需相關步驟,請參閱AEM 6.5使用手冊中的修訂清除。 請使用與您的AEM 6.5 Service Pack層級相容的oak-run版本。 確定可用磁碟空間至少為目前區段存放區大小的兩倍。 從託管執行個體的伺服器上的AEM安裝目錄執行下列命令:

java -Xmx16g -jar oak-run-1.22.21.jar compact ./crx-quickstart/repository/segmentstore

監視處理序,直到處理序成功完成。 請勿中斷壓縮。 這樣做可能會損壞存放庫。

步驟5:重新啟動AEM並驗證

  1. 壓縮完成後,啟動AEM Forms執行個體。
  2. 移除停機期間使用的任何維護頁面或負載平衡器規則。
  3. 確認所有Forms功能皆如預期般運作(編寫、提交、處理、整合)。
  4. 檢查crx-quickstart/repository/segmentstore的大小和磁碟使用狀況,確認大小已減少至預期等級。

預防與最佳實務

  • 避免在生產環境中使用高頻率的Groovy Console工作。 請謹慎使用排定的工作,並僅在必要時使用。
  • 將Groovy Console和其他工具的稽核記錄保留在適當的層級,並定期清除稽核資料。
  • 監視segmentstore的大小和磁碟使用量。 在使用方式接近定義的臨界值時設定警報。
  • 根據Adobe建議執行線上修訂清除,並視需要執行定期離線壓縮,尤其是在大型清除之後。
  • 儘可能使用內建維護任務和支援的API,而非產生大量稽核資料的自訂指令碼。

附註

  • 請勿從crx-quickstart/repository/segmentstore手動刪除檔案。 直接刪除檔案可能會損壞存放庫並導致資料遺失。
  • 如果線上修訂清除沒有減少區段存放區大小,且區段存放區持續成長,請檢閱最近的自訂工作、指令碼和大量作業,以識別寫入活動的來源。
  • 如果對存放庫健康情況存有疑問,請先在複製的環境中使用記錄的Oak一致性和check工具,然後才將相同的步驟套用至生產環境。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f