解決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工作
- 在受影響的AEM Forms執行個體上開啟CRXDE Lite。
- 瀏覽至儲存現有Groovy Console工作的節點,例如
/var/groovyconsole底下。 - 尋找具有短間隔cron運算式的現有工作,例如
0 0/2 * * * ?,每兩分鐘執行一次。
如需相關步驟,請參閱AEM as a Cloud Service使用手冊中的使用CRXDE Lite。 典型的工作節點包含類似下列的屬性:
jobTitle = Remove Old File AttachmentscronExpression = 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:排程離線壓縮的停機時間與備份
- 在非上班時間規劃維護期間。
- 顯示維護頁面,或視需要使用現有的作業程式來封鎖使用者存取。
- 繼續之前,請先建立執行個體的完整備份(包括AEM安裝目錄和資料存放區)。離線壓縮會變更磁碟上的存放庫,而且無法輕易回覆。 如需相關步驟,請參閱監視和維護您的Adobe Experience Manager執行個體中的備份。
- 徹底停止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並驗證
- 壓縮完成後,啟動AEM Forms執行個體。
- 移除停機期間使用的任何維護頁面或負載平衡器規則。
- 確認所有Forms功能皆如預期般運作(編寫、提交、處理、整合)。
- 檢查
crx-quickstart/repository/segmentstore的大小和磁碟使用狀況,確認大小已減少至預期等級。
預防與最佳實務
- 避免在生產環境中使用高頻率的Groovy Console工作。 請謹慎使用排定的工作,並僅在必要時使用。
- 將Groovy Console和其他工具的稽核記錄保留在適當的層級,並定期清除稽核資料。
- 監視
segmentstore的大小和磁碟使用量。 在使用方式接近定義的臨界值時設定警報。 - 根據Adobe建議執行線上修訂清除,並視需要執行定期離線壓縮,尤其是在大型清除之後。
- 儘可能使用內建維護任務和支援的API,而非產生大量稽核資料的自訂指令碼。
附註
- 請勿從
crx-quickstart/repository/segmentstore手動刪除檔案。 直接刪除檔案可能會損壞存放庫並導致資料遺失。 - 如果線上修訂清除沒有減少區段存放區大小,且區段存放區持續成長,請檢閱最近的自訂工作、指令碼和大量作業,以識別寫入活動的來源。
- 如果對存放庫健康情況存有疑問,請先在複製的環境中使用記錄的Oak一致性和
check工具,然後才將相同的步驟套用至生產環境。