首页 > 解决方案 > 从 Artifactory 远程存储库下载大型工件

问题描述

我有以下问题:我正在尝试为托管在同一公司内不同站点的 Maven 存储库创建本地缓存。所以我设置了 Artifactory OSS,创建了几个指向异地服务器的远程存储库,一般来说,一切都按预期工作,除了几个异常大的依赖项。请注意,它们不是带有几兆字节编译代码的 jar,而是充满图像数据的 zip 存档。最大的一个本身就是 8gb。

我的 gradle 构建每次都失败,因为我的本地 Artifactory 回复说该工件确实存在,尝试下载它,然后导致 WebSocketTimeout。当我直接访问异地服务器时,不会发生这种情况。当我取消选中“本地存储”时,它也可以正常工作,但这与我想要实现的完全相反。

有任何想法吗?

标签: javamavengradlerepositoryartifactory

解决方案


这里有几个超时可以发挥作用。当您要求 Artifactory 为您下载和缓存某些内容时,它将:

  1. 完全下载文件
  2. 完成后,它会将文件流式传输给您

这意味着对于较大的文件,Artifactory 将需要一段时间才能将任何内容发送回客户端。如果客户端(或介于两者之间的东西,如反向代理)有一个小的超时,这可能是一个问题。Artifactory 本身也有一个套接字超时设置。

如果文件在下载失败后的某个时间出现在 Artifactory 中,则超时问题可能在反向代理或客户端本身中,您应该尝试增加它们。如果文件从未进入 Artifactory,您应该转到远程存储库设置(UI -> Admin -> Repositories -> Remote -> [repo name] -> Advanced)并将Socket Timeout (MS)增加到两倍或当前值的三倍,足以获得最大的文件,但不要太大,因为它可能会导致与坏服务器建立太多连接。


推荐阅读