【发布时间】:2017-07-31 12:49:58
【问题描述】:
我在一个代理池下的两台服务器中配置了 10 个构建代理。每当使用前四个代理时,请求的构建都在前四个代理的队列中,但还有另外六个可用的代理,构建不会排队到这些代理。
已经快六个月了,代理 10 甚至没有处理过一次构建。几乎不使用 5 到 10 的其他试剂。为什么会出现这种现象?我们如何公平地使用所有的代理来处理这个问题?
【问题讨论】:
标签: tfs build-agent
我在一个代理池下的两台服务器中配置了 10 个构建代理。每当使用前四个代理时,请求的构建都在前四个代理的队列中,但还有另外六个可用的代理,构建不会排队到这些代理。
已经快六个月了,代理 10 甚至没有处理过一次构建。几乎不使用 5 到 10 的其他试剂。为什么会出现这种现象?我们如何公平地使用所有的代理来处理这个问题?
【问题讨论】:
标签: tfs build-agent
运行构建时,TFS 将自动选择池中可用的构建代理。它更像是一个有条件的随机选择。它目前无法优先考虑构建代理。还有一个相关的用户声音如下:
TFS 2015 build vNext agent prioritization
作为一种解决方法,您可以在 vNext 构建中指定构建代理。
您可以向该特定构建代理添加用户能力。然后在构建定义中,您只需将该功能作为需求放入(General 选项卡)。
【讨论】:
似乎构建首先在“最旧”代理上排队。因此,如果代理 10 是您创建的最后一个代理,则仅在前 9 个正在使用时才会使用它,假设它们都具有相同的功能。
似乎不是随机选择代理,而是基于代理的创建顺序。具有讽刺意味的是,这意味着如果您添加一个新的强大的构建服务器,这些代理将排在队列的底部。
PatrickLu-MSFT's answer中的用户语音建议是允许代理优先。
此时的解决方法似乎是删除所有(或部分)代理并按照您希望它们的使用顺序重新创建它们。这仍然意味着最后一个代理将使用较少,但至少您可以稍微影响代理的分布。
我们也遇到了这个问题。我们有六个构建服务器,每个服务器有三个代理,构建分布不公平。我也不想为每个定义分配一个代理,但我想我们将不得不对此感到困惑。
【讨论】: