垃圾收集
Artifactory使用基于校验和的存储来确保每个二进制文件只存储一次。
部署新文件时,Artifactory检查具有相同校验和的二进制文件是否已经存在,如果存在,则将存储库路径链接到该二进制文件。在删除存储库路径时,Artifactory不会删除二进制文件,因为它可能被其他路径使用。但是,一旦所有指向二进制文件的路径都被删除,该文件实际上就不再被使用了。为了确保系统不会被未使用的二进制文件阻塞,Artifactory会定期运行“垃圾收集”来识别未使用(“已删除”)的二进制文件,并从数据存储中清除它们。默认情况下,它被设置为每4小时运行一次,并由控件控制cron表达式。
例如,要每12小时运行一次垃圾收集,您应该指定以下表达式:
0 0 /12 * * ?
Cron表达式 |
指定自动运行垃圾收集的频率 |
下一次运行时间 |
指示下一次根据指定的垃圾收集自动运行Cron表达式 |
现在运行 |
手动立即调用垃圾收集 |
垃圾收集频率
垃圾收集是一项资源密集型操作。过于频繁地运行它可能会降低系统性能。
从Artifactory 6.12.0开始,引入了更快的垃圾收集策略,并在启用时自动运行的垃圾桶设置。新的清理策略获取并取消部署位于垃圾桶存储库下的比配置的垃圾保留期更老的垃圾桶构件。
如果没有其他工件引用相关的校验和,则删除链接的二进制文件。清理也在多个线程上运行(通过设置可配置)artifactory.gc.numberOfWorkersThreads = 3
).
请注意
未引用的二进制文件(包括已存在的未引用的二进制文件或手工从垃圾桶中删除的工件)将在下次运行完整GC时被删除20个GC迭代(可配置,artifactory.gc.skipFullGcBetweenMinorIterations = 20
).
垃圾收集改进
垃圾收集机制引入了以下改进:
从Artifactory 6.12.0开始,引入了更快的垃圾收集策略,并在启用垃圾桶设置。新的清理策略获取并取消部署位于垃圾桶存储库下的比配置的垃圾保留期更老的垃圾桶构件。
如果没有其他工件引用相关的校验和,则删除链接的二进制文件。清理也在多个线程上运行(通过设置可配置)artifactory.gc.numberOfWorkersThreads =
3).未引用的二进制文件(包括现有的未引用二进制文件或手工从垃圾桶中删除的工件)将在以前的完整GC策略中被删除,该策略每20次GC迭代运行一次(可配置,
artifactory.gc.skipFullGcBetweenMinorIterations = 20
).- 从Artifactory 7.31.10开始,您可以通过添加对象来跳过设置对象顺序的需要,从而提高垃圾收集性能
artifactory.gc.skipOrderByFullGc = true
参数设置为artifactory.system.properties
文件。
存储配额限制
Artifactory允许您对整个系统磁盘空间存储的使用量设置限制,以确保服务器文件系统容量永远不会用尽。这有助于保持系统的可靠性和可用性。
一旦用于存储的磁盘空间达到指定的限制,任何部署二进制文件的尝试都会被Artifactory拒绝,状态码为请求实体太大界面底部提示“Datastore disk space is too high”维护屏幕上。
- 当使用文件系统存储时,检查的分区是包含
$ JFROG_HOME / artifactory / var /数据/ artifactory / filestore
目录中。 - 当使用数据库blob存储时,检查的分区是包含
JFROG_HOME / artifactory / var /美元
数据/ artifactory /缓存
目录中。
- 当使用S3模板时,cache-fs将是被检查的分区,默认为
$ JFROG_HOME / artifactory / var / artifactory /
数据/缓存
目录中。
为了帮助您避免达到磁盘空间配额,Artifactory还允许您指定警告级别。一旦使用了指定的磁盘空间百分比,Artifactory将在美元JFROG_HOME / artifactory / var / log / artifactory-service.log
文件的底部显示“数据存储磁盘空间过高”的警告维护屏幕上。
启用配额控制 |
设置后,Artifactory将监视磁盘空间使用情况,并根据中指定的配额发出警告和错误存储空间限制和存储空间警告 |
存储空间限制 |
在Artifactory拒绝部署并发出错误之前可用于存储的可用磁盘空间百分比 |
存储空间警告 |
在Artifactory发出警告之前可用于存储的可用磁盘空间百分比 |
清理未使用的缓存构件
配置远程存储库时,保留未使用的工件设置允许您指定存储库中缓存的未使用的工件在成为清理候选之前应该保留多长时间。此设置不会立即清理未使用的缓存构件,而只是在指定的小时数之后将其标记为清理。的清理未使用的缓存构件设置指定清理操作应该在何时运行,并且只有当标记为清理的未使用的缓存构件实际从系统中删除时才运行。
指定清理频率cron表达式.例如,要每12小时运行一次清理,您应该指定以下表达式:
0 0 /12 * * ?
清理虚拟存储库
虚拟存储库使用内部缓存来存储聚合的元数据,如POM文件。清理虚拟存储库操作删除缓存时间超过168小时(一周)的POM文件。
指定清理频率cron表达式.例如,要每12小时运行一次清理,您应该指定以下表达式:
0 0 /12 * * ?
存储
压缩内部数据库 |
仅支持Derby数据库 该特性仅在使用内部Derby数据库时相关 当从表中删除大量数据或更新其索引时,Derby数据库通常可能包含未使用的已分配空间。默认情况下,Derby不会将未使用的空间返回给操作系统。例如,一旦一个页面被分配给一个表或索引,在表或索引被销毁之前,它不会自动返回给操作系统。 当调用此操作时,Artifactory会回收表及其索引中未使用和已分配的空间,从而压缩内部数据库。 我们建议在Artifactory活动较低时运行此操作,因为在存储繁忙时可能无法完成压缩(在这种情况下,存储不会受到影响)。 |
删除未引用的数据 |
由于在存储文件夹上以错误的文件系统权限运行或耗尽存储空间,可能会出现未引用的二进制文件。 调用此操作时,Artifactory将删除文件存储库或缓存文件夹中未引用的二进制文件和空文件夹。 确保完全停机 为了避免此类错误,我们建议您始终允许Artifactory完全关闭 注意:这个操作并不是指删除存储库树中的空目录——当发现一个文件夹在删除其中的工件后为空时,这些目录将被异步地自动删除。 |