XRAY:如何解决x射线扫描构建超时错误:[{" status ":500, " message ": " failed To index the build "}],试图重新连接

金龟子鼓
2023-01-22 11:06

当第一次用Xray扫描一个版本时,你可能会遇到以下服务器500错误:
x射线扫描连接丢失:Artifactory response: [{"status":500,"message":"failed to index the build"}],试图重新连接。
此错误的原因是当Xray对Artifactory执行以下AQL查询并且Artifactory没有及时响应时超时:
items.find({“@build.name”:“<打造了品牌>”,“@build。编号":"", "artifact.module.build. build. "Repo ": "artifact -build-info", "artifact.module.build.name": "", "artifact.module.build.name . "数”:“<建造编号> "})其中包括(“回购”、“路径”、“名称”)
这个AQL试图从Artifactory获取构建工件。

当AQL失败时,索引器微服务日志中将显示以下错误:导致:无法通过aql获取构建的项目:items.find({"@build.name": "", "@build.name", "编号":"", "artifact.module.build. build. "Repo ": "artifact -build-info", "artifact.module.build.name": "", "artifact.module.build.name . "数”:“<建造编号> "})其中包括(“回购”、“路径”、“名称”)
——at /go/src/m.si-fil.com/xray/pkg/utils/bin_mgr_utils/bin_mgr_utils.go:17 (PerformAql)——
原因:Post“http://$ARTIFACTORY_URL/artifactory/api/search/aql”:net/http:等待响应头超时

为了修复超时问题,我们可以使用以下方法:

1.增加Xray等待外部服务响应的时间。
由于x射线超时,我们可以增加它等待外部请求的时间,直到
超时。为了实现这一点,我们可以在Xray system.yaml中添加以下参数:服务器:
"httpClientResponseHeaderTimeout" = ""

该参数的默认值是300,单位是秒。
有时,根据数据库的规模,指定的AQL需要更长的时间。

2.改变我们的Artifactory数据库

AQL与数据库相关,因此从Derby等内部数据库迁移可能会提高AQL的性能。通常,这些aql针对外部数据库(如Postgres)进行了优化,因此迁移数据库可能会减少执行查询所需的时间。