x射线:如何调整x射线重负载?
相关版本:x光3。X及以上。
x射线带有一组预定义的默认参数和配置。
如果您认为Xray服务器未得到充分利用,或者希望对Xray进行调优,使其能够处理更高的负载,那么通过阅读本文应该能够实现这一目标。
虽然始终可以通过向您的HA集群,这里我们将关注更垂直的规模。
内存和CPU
的最低系统要求x光检查24gb RAM和一个6-core CPU.x光做不如果有一个最大内存设置,它将使用主机服务器的全部资源。2022世界杯阿根廷预选赛赛程
增加硬件将允许您将x射线扩展到更高的限制。除了监视DB服务器之外,还必须监视Xray系统资源。2022世界杯阿根廷预选赛赛程
外部化数据库
如果您还没有这样做,我们的建议是将Xray使用的数据库外部化到专用服务器。这将确保更健康的增长,并在出现问题时更容易进行故障排除。
存储
当扩展Xray时,不要忘记分配额外的存储空间!由于我们将允许更多的并行索引任务,这将需要更多的磁盘空间。确保使用具有高IOPS的SSD,因为在索引和数据库同步期间,Xray将频繁地读写磁盘。
RabbitMQ
由于Xray使用RabbitMQ进行队列和任务管理,因此熟悉它也很重要,此外还要相应地调整它。
数据库连接
我们可以修改每个Xray微服务可以打开到Postgres DB的最大连接数。
这将在$XRAY_HOME/etc/system中配置。yaml文件。
调优示例:服务器:
数据库:
#默认值:60
maxOpenConnections: 90
分析:
数据库:
# Defualt: 30
maxOpenConnections: 60
索引器:
数据库:
#默认值:30
maxOpenConnections: 60
坚持:
数据库:
#默认值:30
maxOpenConnections: 60
重要的是:不要忘记增加Postgres DB可以接受的连接数。
根据经验,我们需要从数据库中获得一些基于以下方面的连接:连接总数=(节点数)* (maxOpenConnServer + maxOpenConnPersist + maxOpenConnAnalysis + maxOpenConnIndexer) + 50;
队列的工人
Queue Worker参数定义了相应的x射线微服务可以处理多少并行消息。例如,“Index”工作者计数定义了每个Indexer节点同时可以处理多少个包。
默认情况下,x射线以队列的工人新内容设置为8,现有内容设置为4。
在x射线2。X版本为2.9.0到2.16,可以通过UI设置worker的值。在3。使用的是X版本Artifactory的统一UI。
在Artifactory 7.11及以下版本中,这是可配置的通过x射线用户界面,在Admin→General。
在Artifactory 7.12及以上版本中,这只能通过REST API。
REST API示例:
#默认值:# New Content: 8 workers # Existing Content: 4 workers
curl -X PUT -H"Content-type: application/json" -u admin http://localhost:8082/xray/api/v1/configuration/workersCount——data '{
"指数":{
“new_content”:16日
“existing_content”:8
},
"坚持":{
“new_content”:16日
“existing_content”:8
},
"分析":{
“new_content”:16日
“existing_content”:8
},
“警告”:{
“new_content”:16日
“existing_content”:8
},
" impact_analysis ": {
“new_content”:8
},
"通知":{
“new_content”:16
}
} '
不要忘记,每个worker都是一个单独的Goroutine(因为Xray是用Go语言编写的),所以高worker值将受到可用CPU内核的限制。
重要的是:通过增加“bin_mgr_workers”,我们允许Xray打开更多的并发连接到Artifactory,从而产生更多的并发下载。
这里的高值也会影响Artifactory实例,因此监视Artifactory也很重要。(考虑调优Artifactory)
*根据不同的规模,您可能需要修改RabbitMQ虚拟主机的限制。
为此,在RabbitMQ主机上运行以下命令(将允许无限数量的连接):Rabbitmqctl set_vhost_limits -p / '{"max-connections": -1}'
在非工作时间手动清空PostgreSQL
x光触发器真空查看Postgres中的“files”表,每周一次。
默认情况下,这将发生在最后一次x射线开始后1周。
在大规模环境中,“真空满”的操作可能需要几分钟。在此期间,x射线的表现可能不像预期的那样。
为了避免这种情况,您可以在非工作时间手动调用吸尘,因此即使x射线将“吸尘”,因为桌子最近被“吸尘”,它应该不会花很长时间。
实现这一目标的一个选择是使用pg_cron要安排这些:真空满文件;
清空完整root_files;
调整人工x射线
在Artifactory中,有几个属性可以被配置来调整Artifactory <> Xray交互。
默认情况下,Artifactory设置为每60秒检查一次是否有应该发送给Xray的新事件。除了一些其他参数之外,这是可以更改的。
这将被设置美元ARTIFACTORY_HOME / etc / artifactory.system.properties。
调优示例:artifactory.xray.indexer.intervalSecs = 30
更改下面记录的任何其他参数并不会使Xray更好地适应重负载,这里记录了它们,以便您可以针对特定的用例检查它们。
事件提交间隔 |
60 |
|
扫描状态的人工制品缓存 |
300 |
|
缓存没有扫描状态的工件 |
120 |
|
每次x射线服务器状态检查的间隔时间 |
5 |
|
50 |
||
构建客户端—任何与扫描构建操作相关的内容 |
600000 |
|
普通客户端-其他的 |
5000 |
