如何对Artifactory进行重载调优?
相关版本:手工7级及以上。
可以获得以前版本的调优指南在这里.
Artifactory提供了一组预定义的默认配置和参数。默认的Artifactory可以处理最多200个并发连接。
如果您认为Artifactory服务器没有得到充分利用,或者为了允许它在给定时刻处理更多进程,可以调优Artifactory以支持更高的负载。
虽然它总是可以通过添加额外的节点到您的HA集群在这里,我们将关注一个更垂直的尺度。
推荐:Artifactory在您的组织中变得越重要,就越需要有一个监控系统来监视Artifactory。
你可以在监控和优化工厂性能.
JVM内存
默认情况下,Artifactory带有预定义的JVM内存限制。
若要修改JVM内存分配,请参考产品配置的一部分安装指南.请遵循我们的硬件建议.
在增加JVM内存分配时,请确保至少将总RAM的30%留给操作系统和其他服务。
数据库连接
属性可以改变Artifactory节点可以打开到DB的最大连接数Artifactory系统YAML.
默认值:artifactory:
数据库:
maxOpenConnections: 100
...
访问:
数据库:
maxOpenConnections: 100
...
元数据:
数据库:
maxOpenConnections: 100
调优示例:artifactory:
数据库:
maxOpenConnections: 300
...
访问:
数据库:
maxOpenConnections: 300
...
元数据:
数据库:
maxOpenConnections: 300
重要的是:Artifactory的maxOpenConnections参数也被Artifactory使用会话管理机制。
这意味着一旦使用了上面的示例,Artifactory节点将打开高达1200 DB的连接。
因此,我们需要确保DB能够容纳所有Artifactory节点可以打开的连接总数。
根据经验,我们将从DB中需要一些连接,基于:总连接数=(节点数)* ((artifact .database. database.)maxOpenConnections * 2) + access.database.maxOpenConnections + metadata.database.maxOpenConnections) + 50;
*额外的50个连接是为了在所有DB连接池耗尽的情况下提供额外的喘息空间。
Tomcat HTTP连接/线程
Artifactory运行在Apache Tomcat之上,后者管理传入的HTTP连接池。
这设置了Artifactory可以服务的并发HTTP连接的数量。
属性可以覆盖默认的线程池限制Artifactory系统YAML.
默认值:artifactory:
tomcat:
连接器:
maxThreads: 200
...
访问:
tomcat:
连接器:
maxThreads: 50
调优示例:artifactory:
tomcat:
连接器:
maxThreads: 600
...
访问:
tomcat:
连接器:
maxThreads: 150
重要的是:修改Access时maxThreads,则需要更新JFROG_HOME美元/ artifactory / var / etc / artifactory / artifactory.system.properties文件:artifactory.access.client.max.connections =
这是为了修改Artifactory用来与Access进行内部交互的内部HTTP连接池。
Artifactory异步线程池
Artifactory中最重要的线程池之一是“异步”线程池。它定义了可以并行运行的进程的数量。
除了配置并行进程的总数外,我们还可以修改可以排队的最大进程数。
这是在JFROG_HOME美元/ artifactory / var / etc / artifactory / artifactory.system.properties.
默认值:
(这意味着机器的CPU核数乘以4)artifactory.async.corePoolSize = (4 * Runtime.getRuntime().availableProcessors())artifact .async. poolmaxqueuesize = 10000
调优示例:
(不应超过机器CPU核数的8倍)artifact .async. corepoolsize = 128artifactory.async.poolMaxQueueSize = 100000
垃圾收集
默认情况下,Artifactory垃圾收集配置为每4小时运行一次。
GC是一个非常消耗资源的操作,如果您发现GC的运行周期与性能变慢之间存在相关性,我们建议您更改Artifactory GC(不相关的JVM GC)在非高峰时间运行。
HTTP客户端
Artifactory为每个远程存储库的传出HTTP请求管理一个单独的连接池。
默认情况下,此连接池限制为50个并发连接,并且每个唯一路由最多限制为50个并发连接。
这是在JFROG_HOME美元/ artifactory / var / etc / artifactory / artifactory.system.properties.
默认值:Artifactory.http.client.max.total.connections = 50
artifacts .http.client.max.connections.per.route = 50
调优示例:clients .max.total.connections = 150
artifacts .http.client.max.connections.per.route = 120
绕过路由器
Artifactory 7系统架构为我们提供了一种灵活的方式来修改将由Artifactory服务处理的请求的流程。
通过绕过对Artifactory的API请求的Router服务,您可以从性能的改进中获益。
这可以通过使用反向代理如NGINX或Apache HTTPD.
通过使用反向代理来重定向请求JFROG_URL美元/artifactory直接向/ artifactory ARTIFACTORY_NODE: 8081美元,您将绕过Router服务。
当处于高负载时,这可以帮助更好地提前分发请求。
Filestore配置
Artifactory支持不同的后端存储配置来存储Artifactory filestore.
对于配置的存储不是本地的场景,可以使用较大的存储空间来提高性能Cache-FS提供者为每个节点本地挂载。
缓存的文件将很快得到处理,因此拥有一个大型的Cache FS提供程序将会提高性能。
一些文件存储提供程序允许参数调优和修改。例如:
最终:“numberOfThreads”。
Eventual-Cluster:“maxWorkers”。
远程:“maxConnections”。
欲知详情,请浏览管理Artifactory文件存储的最佳实践白皮书。
