x射线:如何调整x射线重负荷?
相关版本:x光3。X及以上。
x射线附带一组预定义的默认参数和配置。
如果您认为您的Xray服务器没有得到充分利用,或者您希望对Xray进行调优,使其能够处理更高的负载,那么您应该能够通过阅读本文实现这一目标。
虽然它总是可以通过添加额外的节点到您的HA集群在这里,我们将关注一个更垂直的尺度。
内存和CPU
的系统最低要求x射线是24gb内存和一个6-core CPU.x光做不有一个最大RAM设置,它将使用主机服务器的全部资源。2022世界杯阿根廷预选赛赛程
增加硬件将允许您将x射线扩展到更高的极限。除了DB服务器之外,监视Xray系统资源也很重要。2022世界杯阿根廷预选赛赛程
外部化数据库
如果您还没有这样做,我们的建议是将Xray使用的数据库外部化到专用服务器。这将确保更健康的增长,并在出现问题时更容易进行故障排除。
存储
当扩展Xray时,不要忘记分配额外的存储空间!由于我们将允许更多的并行索引任务,这将需要更多的磁盘空间。确保使用具有高IOPS的SSD,因为在索引和数据库同步期间,Xray将频繁地对磁盘进行读写。
RabbitMQ
由于Xray使用RabbitMQ进行队列和任务管理,除了对它进行相应的调优外,熟悉它也很重要。
数据库连接
我们可以改变每个x射线微服务可以打开到Postgres DB的最大连接数。
这将在$XRAY_HOME/etc/系统中配置。yaml文件。
调优示例:服务器:
数据库:
#默认值:60
maxOpenConnections: 90
分析:
数据库:
# Defualt: 30
maxOpenConnections: 60
索引器:
数据库:
#默认值:30
maxOpenConnections: 60
坚持:
数据库:
#默认值:30
maxOpenConnections: 60
重要的是:不要忘记增加Postgres DB可以接受的连接数。
根据经验,我们将从DB中需要一些连接,基于:总连接数=(节点数)* (maxOpenConnServer + maxOpenConnPersist + maxOpenConnAnalysis + maxOpenConnIndexer) + 50;
队列的工人
Queue Worker参数定义了相应的Xray微服务可以处理多少并行消息。例如,“Index”工作者计数定义了每个Indexer节点同时可以处理多少包。
默认情况下,Xray以队列的工人新建内容设置为8,现有内容设置为4。
x射线2。X版本2.9.0到2.16,你可以通过UI设置worker值。3。使用的是X版本Artifactory的统一UI。
在Artifactory 7.11及以下版本中,这是通过x射线UI配置,在Admin→General。
在Artifactory 7.12及以上版本,这只能通过REST API。
REST API示例:
#默认值:#新内容:8个工人#现有内容:4个工人
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(就像x射线是用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;
调整Artifactory x射线
在Artifactory中,可以配置几个属性来调优Artifactory <> x射线交互。
默认情况下,Artifactory被设置为每60秒检查一次,如果它有新的事件,它应该发送到Xray。除了一些其他参数外,这个参数还可以改变。
这将被设置美元ARTIFACTORY_HOME / etc / artifactory.system.properties。
调优示例:artifactory.xray.index . intervalsecs = 30
更改下面记录的任何其他参数并不期望更好地优化Xray,这里记录了它们,以便您可以针对特定的用例查看它们。
事件提交间隔 |
60 |
|
获得扫描状态的工件缓存 |
300 |
|
没有扫描状态的工件缓存 |
120 |
|
每次x射线服务器状态检查的间隔时间 |
5 |
|
50 |
||
构建客户端-任何与扫描构建操作相关的东西 |
600000 |
|
普通客户端-其他一切 |
5000 |
