2017-07-06 73 views
1

我正在两个代理运行一个本地TFS实例。代理1有一个本地路径,我们存储我们的工件。代理2必须通过网络路径访问该路径(\ agent1 \ artifacts ...)。VSTS代理非常缓慢地从本地网络共享下载工件

从代理程序1下载工件需要20-30秒。从代理程序2下载工件需要4-5分钟。如果从代理2使用浏览器复制文件,则需要大约20-30秒。

我试过在其他机器上添加其他代理。所有这些工具在下载工件时性能同样很差,但在手动复制时很快。

任何人都会遇到这种情况,或提供一些解决此问题的方法。

+1

我测试了两个嵌套代理(代理2位于agent1的子文件夹中)并共享代理2的路径作为网络路径,但它们几乎花费相同的秒数来下载工件。顺便说一下,您可以将两个代理配置在不同的目录中(删除agent2配置)并重试。 –

+0

在听起来像“我也是”的风险中,我可以证实这是一个常见问题。出于这个原因,我们最终需要额外的管道来托管构建。将所有文件放在一个区域中,而不是将它们从云端传输到局域网 - 这只是物理。 –

+0

我明白只是物理的想法,但这些是使用千兆网络的同一网络上的虚拟机。正如我所说,我可以使用Windows资源管理器复制这些文件,它需要几秒钟,但代理程序需要几分钟。 –

回答

1

是的肯定是造成问题的v2。

我们的下载文物步骤已经从2分钟到36分钟。这是完全不能接受的。我要去尝试代理v2.120.2,看看是否是更好......

Agent v2.120.2

我想这是因为我们的文物档案的数量,我们有3.71GB跨越12042个文件夹2604 !

另一个选项我会研究它为每个公共神器压缩或创建一个nuget包,然后解压后!不是理想的解决方案,但是之前我需要使用RoboCopy,这显然是该代理使用的版本。

RoboCopy不擅长处理大量的小文件,并且不得不为每个网络文件创建一个句柄,这会增加很多开销!

编辑: 对最新版本的更改没有什么区别。我们决定采用不同的路线,并使用工件类型“服务器”而不是“文件共享”,它已将速度从26分钟加快到4.5分钟。

+0

感谢您的类似的故事 - 我会尝试服务器而不是文件共享,看看是否有帮助。 –

+0

我认为这对我来说可能是一个不错的折衷: 一个正常的v1文件共享大约需要45秒,一个v2服务器版本需要大约70秒而文件大小为2分钟。 –

1

我发现我的问题的来源,它似乎是v2代理。

撇开Marina的评论我试图在01上安装第二个代理,它和02有完全相同的行为。我试图弄清楚什么是不同的,然后我注意到01的代理版本是1.105.7,新的测试实例是2.105.7。我在黑暗中进行了刺探,并在我的第二台服务器上安装了1.105.7,现在他们的神器下载时间相差不多。

我感谢您的帮助。

+0

乱七八糟:https://developercommunity.visualstudio。com/content/problem/77641/tfs-build-v2-agent-downloads-artifacts-slowly-v1-u.html –

+0

我觉得你的痛苦 - 我有一个我坚持的v1代理的副本,希望它能持续到新版本的TFS on-prem出现解决这个问题。 –