java - 从 Artifactory 远程存储库下载大型工件
问题描述
我有以下问题:我正在尝试为托管在同一公司内不同站点的 Maven 存储库创建本地缓存。所以我设置了 Artifactory OSS,创建了几个指向异地服务器的远程存储库,一般来说,一切都按预期工作,除了几个异常大的依赖项。请注意,它们不是带有几兆字节编译代码的 jar,而是充满图像数据的 zip 存档。最大的一个本身就是 8gb。
我的 gradle 构建每次都失败,因为我的本地 Artifactory 回复说该工件确实存在,尝试下载它,然后导致 WebSocketTimeout。当我直接访问异地服务器时,不会发生这种情况。当我取消选中“本地存储”时,它也可以正常工作,但这与我想要实现的完全相反。
有任何想法吗?
解决方案
这里有几个超时可以发挥作用。当您要求 Artifactory 为您下载和缓存某些内容时,它将:
- 完全下载文件
- 完成后,它会将文件流式传输给您
这意味着对于较大的文件,Artifactory 将需要一段时间才能将任何内容发送回客户端。如果客户端(或介于两者之间的东西,如反向代理)有一个小的超时,这可能是一个问题。Artifactory 本身也有一个套接字超时设置。
如果文件在下载失败后的某个时间出现在 Artifactory 中,则超时问题可能在反向代理或客户端本身中,您应该尝试增加它们。如果文件从未进入 Artifactory,您应该转到远程存储库设置(UI -> Admin -> Repositories -> Remote -> [repo name] -> Advanced)并将Socket Timeout (MS)增加到两倍或当前值的三倍,足以获得最大的文件,但不要太大,因为它可能会导致与坏服务器建立太多连接。
推荐阅读
- php - 通过 PHP 将多个值保存到 MySQL 中的同一列
- bash - Bash 变量导致预期输出混乱
- pine-script - 如何在 pine script tradingview 中获得最高价、最低价和收盘价
- python - 为什么我的角色没有出现在我的 pygame 窗口中?
- react-native - 如何使用 react-native-ble-plx 从蓝牙设备获取数据?
- c# - 如果您在 groupBy 和 Sum 之后返回 dataTable,则使用 Linq 或任何其他方式使用 Sum 转换 Datatable GroupBy 多列
- java - 使用 Guava 库的 Java 中布隆过滤器的交集和并集
- nexus - 通过升级代理将数据从 Nexus2 迁移到 Nexus3
- logistic-regression - StatsModels api 上的交叉验证
- java - A*-Search 评估似乎比贪婪搜索执行得更差