如何排除无法从远程存储库解析的故障

JFrog支持
2023-01-22 11:09

主题:

通常情况下,用户无法从远程回购(或从聚合远程的虚拟机)解析包。这里有一些你可以尝试的步骤,可以帮助你诊断原因

决议

对于远程存储库,Artifactory将始终检查上游服务器(Artifactory代理的服务器,例如npmjs.org)的元数据,以查看是否有更新版本的包。这意味着Artifactory将尝试从上游下载元数据文件。如果上游服务器关闭,并且元数据中没有您正在寻找的包的版本,那么Artifactory将无法为工件提供服务,即使工件已被缓存。一旦元数据被解析,或者当前缓存的元数据是最新的,客户端(npm, pypi等)将检查这个元数据中实际包的URL。您可以尝试以下几个步骤来帮助您诊断问题:

检查$ARTIFACTORY_HOME/logs/artifactory.log和$ARTIFACTORY_HOME/logs/request.log。log可以提供堆栈跟踪,而request.log可以告诉您关于请求的信息,比如响应代码、响应时间、响应大小等等(//www.si-fil.com/confluence/display/RTF/Artifactory+Log+Files#ArtifactoryLogFiles-RequestLog)。此外,通过查看请求日志,您可以判断请求是否击中了Artifactory。
-检查任何反向代理错误和访问日志
检查你是否可以从Artifactory所在的机器直接从上游下载。如果不能,那么Artifactory和上游之间可能存在连接问题。
-尝试Zapping Cache,同时修改元数据检索缓存周期”和“丢失的检索缓存期”远程存储库设置为0。这将迫使Artifactory始终从上游检索元数据,并且不缓存任何404 not founders。(//www.si-fil.com/confluence/display/RTF/Advanced +设置# AdvancedSettings-CacheSettings)
-如果你有一个公司代理启用远程回购,尝试禁用它。(//www.si-fil.com/confluence/display/RTF/Advanced +设置# AdvancedSettings-NetworkSettings)。如果没有这个选项,您可以在指定代理(https://stackoverflow.com/questions/9445489/performing-http-requests-with-curl-using-proxy)的同时,尝试从Artifactory机器解析使用curl失败的包或元数据。
-尝试绕过任何反向代理或负载均衡器,你可能有在Artifactory和解决直接从Artifactory。如果直接从Artifactory解析有效,那么尝试从反向代理解析,然后再从负载均衡器解析。
-如果你收到超时,尝试增加任何反向代理超时设置(Apache的timeout和ProxyTimeout,或nginx的proxy_read_timeout, proxy_send_timeout和proxy_connect_timeout)或远程存储库设置(//www.si-fil.com/confluence/display/RTF/Advanced+Settings#AdvancedSettings-NetworkSettings)下的Socket timeout设置。
-不要使用客户端,尝试使用REST API请求,比如curl。您通常可以为正在使用的客户机启用详细记录器,以查看它试图到达的URL。
-尝试创建一个新的远程repo并从中解析