如何Debian存储库元数据计算工作?
Debian存储库在Artifactory 3.3版中可用。
在版本5.6Debian元数据计算的内部机制已经改变。
从5.6版开始,一旦Debian包部署到本地存储库,正在将用于索引该存储库的分发路径的事件添加到队列中。(例如,对于'debian-local'存储库和主客关系的分布,分布路径为:debian-local / dist /主客关系的)
该队列由专门的Debian元数据工作者(默认为8个,可配置)不断处理。
这意味着,一旦上传了Debian包,如果队列为空并且有一个worker可用,它将开始处理事件并索引元数据。
此方法通过为整个分发路径(包括存储库)创建锁(debian-local / dist /主客关系的).
除此之外,在HA集群中,所有节点都可以参与Debian元数据计算。分发路径和存储库的事件一个接一个地排队和处理。(在大多数情况下,一切都发生得非常快,所以事件不会排队很长时间,或者根本不会)
”可选索引压缩格式可以配置。当通过UI创建本地Debian存储库时,它将标记Bzip2(。可选索引压缩格式中的bz2扩展)复选框。如果不需要,禁用此功能将缩短元数据计算时间。
虚拟存储库Artifactory在6.6版中增加了对Debian的支持。虚拟存储库有一个单独的元数据计算过程,它从所选的聚合存储库中聚合并合并Packages & Release文件。与本地存储库一样,它是根据分发路径和虚拟存储库进行索引的。
虚拟存储库元数据计算的实现在专用队列和工作者方面类似于本地存储库。对于虚拟存储库元数据计算,默认有5个worker(也是可配置的)。
Debian Virtual库有一些重要的参数,这些参数会极大地影响计算时间和性能:
”索引远程体系结构——因为我们将合并本地存储库和远程存储库,指定我们想要从远程存储库中索引的体系结构可以为这个过程节省大量时间。我们应该始终努力只索引需要的东西。
”可选索引压缩格式-与本地存储库类似,但影响更大。只索引所需的格式将节省计算时间。
"元数据检索缓存周期—默认为10分钟。这定义了计算的缓存被视为“未过期”的时间段。一旦过期,必须进行元数据计算才能下载文件。较高的值意味着较少的计算,但最近的项目可能不可用。
注意:每个被索引的Debian包的内部元数据都缓存在ARTIFACTORY_HOME /数据/ .cache / debian /美元.在这个文件夹中,你会发现一个结构,在Artifactory中以目录的形式组成Debian存储库的层次结构,在这些目录下是已计算的Debian包的提取的Debian Control元数据文件。在运行整个Debian存储库的计算时,这变得更加高效,甚至至关重要,因为预提取的Control文件用于从本地磁盘检索元数据,而不是再次提取每个包。
REST api
计算Debian存储库元数据—重新计算整个存储库的元数据。
默认为同步。适用于本地存储库和虚拟存储库。
计算缓存的远程Debian存储库坐标-这个API将为缓存的Debian包添加坐标。如果稍后将包移动到本地存储库,这将使包可解析。
调优Debian元数据计算
小心!Debian元数据计算基于锁定机制。一旦一个worker开始索引存储库和分发的特定组合,当锁存在时,另一个worker将不会开始为同一路径的另一个事件索引。如果所有的包都部署到相同的存储库和发行版,那么增加工作人员的分配将没有帮助。
下面提到的工人是Artifactory的一部分异步线程池.
当更改以下配置时,您可能需要考虑增加总数异步线程池.
更多信息请访问:如何对Artifactory进行重载调优?
我们将在下面配置上述属性:美元ARTIFACTORY_HOME / etc / artifactory.system.properties。Debian本地存储库元数据计算工作者:Artifactory.debian.metadata.calculation.workers = 8Debian虚拟存储库元数据计算工作者:artifactory.debian.virtual.metadata. computing .workers = 5Debian缓存的远程存储库坐标计算人员:artifacts .debian.coordinates.calculation.workers = 4
解决Debian元数据问题
免责声明:更改日志级别可能会导致性能下降。应用于生产系统时要小心处理。
为了解决Debian元数据计算中可能出现的问题,我们可以将这些记录器添加到美元ARTIFACTORY_HOME / etc / logback.xml.
当应用时,“debian.log”文件将出现在$ARTIFACTORY_HOME/logs/文件夹中。这些更改不需要重新启动。
大部分Debian相关操作:
对于Artifactory版本6。X:
<文件> $ {artifactory.home} /日志/ debian.log > < /文件
<编码器>
<模式> % $ {artifactory日期。contextId}[%线程][% 5 p] \ (% -20 c {3}: % L \) - m % n % > < /模式
< /编码器>
< rollingPolicy class = " ch.qos.logback.core.rolling.FixedWindowRollingPolicy " >
< FileNamePattern > $ {artifactory.home} /日志/ debian. % i.log < / FileNamePattern >
13 < maxIndex > < / maxIndex >
< / rollingPolicy >
< triggeringPolicy class = " ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy " >
< < MaxFileSize > 25 mb / MaxFileSize >
< / triggeringPolicy >
< / appender >
<级别值= "跟踪" / >
< appender-ref ref = " debian " / >
< / logger >
<级别值= "跟踪" / >
< appender-ref ref = " debian " / >
< / logger >
<记录器name = " org.jfrog.repomd。dpkg”相加性= " false " >
<级别值= "调试" / >
< appender-ref ref = " debian " / >
< / logger >
对于Artifactory版本7。X:
<文件> $ {log.dir} / artifactory-debian.log > < /文件
< rollingPolicy class = " org.www.si-fil.common.logging.logback.rolling.FixedWindowWithDateRollingPolicy " >
< FileNamePattern > $ {log.dir.archived} / artifactory-debian. % i.log.gz < / FileNamePattern >
10 < maxIndex > < / maxIndex >
< / rollingPolicy >
< triggeringPolicy class = " ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy " >
< < MaxFileSize > 25 mb / MaxFileSize >
< / triggeringPolicy >
<编码器类= " ch.qos.logback.core.encoder.LayoutWrappingEncoder " >
<布局类= " org.www.si-fil.common.logging.logback.layout.BackTracePatternLayout " >
<模式> % {yyyy-MM-dd不'HH: mm: ss。瑞士,UTC} Z [jfrt] [% 5 p] [% -16 x {uber-trace-id}] [% -30.30 (% c {3}: % L)][% -20.20线程]- m % n % > < /模式
> < /布局
< /编码器>
< / appender >
<级别值= "调试" / >
< appender-ref ref = " debian " / >
< / logger >
<级别值= "调试" / >
< appender-ref ref = " debian " / >
< / logger >
<记录器name = " org.artifactory.addon。dpkgcommon”相加性= " false " >
<级别值= "调试" / >
< appender-ref ref = " debian " / >
< / logger >
发服务(负责复制/移动操作,在计算结束时被调用。这是一个跨artifactory记录器,不仅Debian相关):<记录器name = " org.artifactory.repo.service。发“可加性= " false " >
< appender-ref ref = " debian " / >
< / logger >
工作队列(Debian元数据计算使用的工作队列的核心。这是一个非常冗长的跨artifactory日志记录器):<记录器name = " org.artifactory.work。队列”相加性= " false " >
<级别值= "跟踪" / >
< appender-ref ref = " debian " / >
< / logger >
从本地缓存读取的信息(这个记录器将帮助解决整个存储库计算的问题):<记录器name = " org.artifactory.addon。dpkgcommon”相加性= " false " >
<级别值= "跟踪" / >
< appender-ref ref = " debian " / >
< / logger >
<记录器name = " org.jfrog.repomd.dpkg.extractor。DpkgMetadataExtractor”相加性= " false " >
<级别值= "跟踪" / >
< appender-ref ref = " debian " / >
< / logger >
