修订版清理 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 脱机修订清理:
- 首次联机修订版清理后,运行存储库的大小将翻倍。 之所以会出现这种情况,是因为现在有两代存储在磁盘上。
- 在后续运行期间,在创建新一代存储库时,存储库将暂时增长,然后稳定回到在首次运行后所具有的大小,因为在线修订清理过程会回收上一代存储库。
此外,请记住,根据提交的类型和数量,每代提交的大小与上一代提交的大小不同,因此最终大小可能会因运行而异。
因此,建议将磁盘的大小至少比最初估计的存储库大小大2或3倍。
完全和尾部压缩模式 full-and-tail-compaction-modes
AEM 6.4 介绍 两种新模式 对于 压缩 联机修订清理过程的阶段:
- 的 完全压缩 模式会重写整个存储库中的所有区段和tar文件。 因此,后续清理阶段可以删除整个存储库中最大垃圾量。 由于完全压缩会影响整个存储库,因此需要大量系统资源和时间才能完成。 完全压缩对应于AEM 6.3中的压缩阶段。
- 的 尾压 模式只会重写存储库中最近的区段和tar文件。 最近的区段和tar文件是自上次运行完全压缩或尾压缩后添加的区段和tar文件。 因此,后续的清理阶段只能删除存储库最近部分中包含的垃圾。 由于尾部压缩仅影响存储库的一部分,因此完成尾部压缩所需的系统资源和时间比完全压缩要少得多。
这些压缩模式在效率和资源消耗之间构成了权衡:尾部压实效果较差,对正常系统运行影响较小。 相比之下,完全压实效果更好,但对系统正常运行的影响更大。
AEM 6.4还在压缩期间引入了更高效的内容重复数据删除机制,从而进一步减少存储库的磁盘空间占用。
下图显示了AEM 6.4中平均执行时间和磁盘平均占用空间比AEM 6.3减少的内部实验室测试结果:
如何配置完整和尾压缩 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
在某些情况下,尾部和完全压缩模式之间的交替会延迟清理过程。 更准确地说,在完全压缩后,存储库将会增加(其大小将翻倍)。 当存储库将降低到预完全压缩大小以下时,将在后续尾部压缩中回收额外空间。 还应避免并行维护任务执行。
建议将磁盘的大小至少比最初估计的存储库大小大2或3倍。
在线修订清理常见问题解答 online-revision-cleanup-frequently-asked-questions
AEM 6.4升级注意事项 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
-
对于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中删除,但无效。
-
-Dcompytion-progress-log. 将记录的压缩节点数。 默认值为150000,这表示在操作期间将记录150000紧的节点。 将此参数与下面介绍的下一个参数结合使用。
-
-Dtar.PersistCompontationMap。 将此参数设置为true可使用磁盘空间而不是堆内存来保留压缩映射。 需要oak-run工具 版本1.4 更高。 欲知更多详情,请参阅 脱机修订清理常见问题解答 中。 此参数已在Oak版本1.6中删除,但无效。
-
-force。 强制压缩并忽略不匹配的区段存储版本。
--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
- 单击 RevisionGarbageCollection MBean。
- 在下一个窗口中,单击 startRevisionGC() 然后 调用 启动修订垃圾收集作业。