x射线:解决数据库同步问题
当安装x光第一次,有一个初始的DB同步,下载和存储所有的公共数据,是已知的x射线。
这些数据包括漏洞、许可证和第三方组件的信息。
本文将介绍可能帮助您解决Xray数据库同步常见问题的潜在线索。
数据库同步涉及x射线的2个服务:
- 服务器——这个服务负责下载和监控DB同步进程。
- 持久化——服务器在本地下载了漏洞和组件后,持久化服务负责将它们提取出来并插入到数据库中。
DB同步进程:
- 下载更新文件。这些文件将下载到$JFROG_HOME/var/work/server/updates,其中数据将保存在两个文件夹中:组件和漏洞。
- 一旦Xray完成下载所有更新文件,它将开始提取每个存档,其中包含大量的json文件,每个包含大量的信息。对于已完成提取的每个存档,Xray将重命名文件并添加'。Completed'后缀-
.Completed。 - 一旦'。'后缀已完成,x射线将开始执行一个影响分析处理提取的信息(这是在DB同步之后完成的)。
- 一旦影响分析完成,x射线将删除'。完成的文件。
注意:在HA的情况下,将随机选择一个节点执行DB同步。
x射线数据库同步是一个数据库IOPS密集型操作。这是因为我们在数据库中写入、更新和删除信息,这就是为什么确保Xray DB满足要求是很重要的x射线系统要求.
解决x射线数据库同步不工作的问题
对于这类问题,我们应该检查以下几个线索:
- 代理或防火墙——当JFrog平台上配置了一个默认的系统代理时,任何作为DB同步的一部分的外发请求都将通过这个代理发送,因此,检查代理是否可以服务文件并且不会阻塞请求是很重要的。以下是需要在代理服务器或防火墙上加入白名单的url:
https://releases.jfrog.io/
https://releases-cdn.jfrog.io
https://jxray.jfrog.io
- 试用许可证过期- Xray中的试用许可证过期可能会干扰Xray DB同步,请参阅这篇文章检查是否存在这种情况,并获得如何移除它的说明。
- 过期的JFrog许可证-如果这不是试用许可证,有可能您的JFrog平台正在使用过期的许可证或不包括Xray的许可证。
- 如果您怀疑是这种情况,我建议使用此方法检查许可信息REST API检查它是否有效,DB同步将无法使用过期的许可证,在xray-server-service.log中可以看到这样的错误,其中JXray服务器无法验证您的许可证:
[2020/10/06 11:25:38 CEST] [error] (m.si-fil.com/xray/internal/jobs.DownloadOnlineUpdates:584) Updates worker id 0 failed to download update from https://jxray.jfrog.io/api/v1/updates/bundles?from=1593080483014&to=1601976328671: failed to access:https://jxray.jfrog.io/api/v1/updates/bundles?From = 159308048304 &to=1601976328671返回状态代码:401
- 存储-确保Xray有足够的存储空间来下载所有与DB同步相关的文件-建议至少为DB同步保存300gb的空闲空间。
- 检查x射线服务连接,如果其中一个服务关闭,那么可能不是DB同步问题,而是更广泛的问题,甚至HA节点连接可能无法正常工作。
监视Xray的一种方法是使用UI服务状态页面(在管理选项卡下->监视->服务状态)并检查所有服务是否正常。
另一种方法是使用组合指标还有x光路由器健康检查API。
解决x射线数据库同步慢的问题
- 如前所述,DB同步性能主要与数据库IOPS相结合,这就是为什么满足系统需求.
- 数据库连接-默认情况下,Xray需要如下数量的数据库连接:
- 对于x射线服务器服务- 65个连接(60个活动连接+ 5个空闲连接)
- Indexer,持久化和分析每个需要35个连接(30个活动+ 5个空闲)。如果我们把这三个连接结合起来,总共有105个连接。
这意味着单个x射线节点总共需要大约170个DB连接。
对于HA,我们可能需要将上述值与节点数相乘。
作为公式,我们总结如下:总连接数=(节点数)* (maxOpenConnServer + maxOpenConnPersist + maxOpenConnAnalysis + maxOpenConnIndexer) + 50;
3.如果在x射线上已经有了索引的工件(在初始DB同步之前),影响分析可能会减慢DB同步,因此我们可以暂时减少影响分析的工作人员的数量。默认情况下,它是8个工人,我们可以将这些特定的工人类型减少到1或2。这可以用这个来做REST API之后需要重新启动x光。一旦初始的DB同步完成,不要忘记将它放回原始值。
如果数据库同步出现任何其他问题,我们可能希望通过system.yaml将Server和Persist服务的日志级别提高到DEBUG。
例如:服务器:看到有关文档获取更多信息。
日志:
应用程序:
水平:调试
注意:
如果您正在使用旧版本的Xray,我们建议将Xray升级到3.38.2或更高版本,因为这些版本包含了DB同步进程的主要性能改进。
