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