【问题标题】:TFS 503 Service Unavailable when retrieving files检索文件时 TFS 503 服务不可用
【发布时间】:2020-11-18 21:29:29
【问题描述】:

我们有一个 TFS 2013 服务器,我仅用于源代码控制。我刚买了一台装有 Windows 10 和 Visual Studio 2017 的新台式机。我能够成功连接到 TFS,并且可以开始下拉代码,但是在本地构建目录结构并且文件开始下拉后,几个都成功了,然后其余的失败并出现 503 Service Unavailable,连接丢失,迫使我重新连接。

几秒钟后我可以再次连接,并继续尝试,它再次发生。

如果我一次拉下一个文件,似乎还可以,但是当我尝试拉出整个项目时,它就崩溃了。

这发生在服务器上的多个项目上。

一般来说,当我将应用程序重载到导致应用程序池崩溃的程度时,我会在 ASP.NET 中看到 503 错误 - 我不知道这是否是这里发生的情况,但如果是,我想知道是否可能 VS 拉下代码太快,可能有太多并发线程或其他东西,旧版本的 TFS 无法处理,导致它崩溃。

如果是这样的话,我可以做些什么来改变我的机器上的那个吗?或者您对可能导致这种情况的原因有任何其他想法吗?

截至目前,我无权访问服务器来获取事件日志,但如果我无法自行解决和修复问题,我可以提出请求。

【问题讨论】:

    标签: visual-studio tfs visual-studio-2017 tfvc


    【解决方案1】:

    我上次遇到这个时,我在rate-limiting proxy 后面。 503 是限速等临时服务中断的常见错误码。

    过多的请求会被延迟,直到它们的数量超过最大突发大小,在这种情况下,请求会因错误 503(服务暂时不可用)而终止。

    托管 TFS 的 IIS 服务也可以be configured to have request rate limiting

    maxBandwidth 可选的 uint 属性。

    指定用于站点的最大网络带宽,以每秒字节数为单位。使用此设置有助于防止 IIS 活动使网络过载。

    maxConnections 可选的 uint 属性。

    指定站点的最大连接数。使用此设置来限制同时客户端连接的数量。

    Visual Studio 2017 优化了它通过多个并行线程(如果我没记错的话至少是 8 个)下载的方式。这可能会触发某些代理中的速率限制。而且很多小代码文件很容易触发限速。

    如果可以直接到达TFS服务器,您可以尝试将其添加到代理排除列表中,以排除是否是您端的代理导致中断。但是像 nginx 这样的 HTTP 服务器也可以作为一种安全措施来实现,并且可能会在服务器端进行反向代理,在这种情况下,服务器管理员必须更改限制。

    【讨论】:

    • 这很有意义,谢谢。我会请我们的服务器人员查看那些 IIS 设置,我不知道我们是否有限速代理,所以我也会问这个问题。我想您不知道我可以告诉 VS2017 放慢速度并使用单线程的方法吗?我没有看到任何类似的设置,但也许我错过了一些东西。
    • 这很可能是它的样子 - 但我发现 Visual Studio 实际上有一个可用的更新补丁,并且在我安装之后,文件成功地下来了。它们的下降速度确实比之前慢,所以微软可能意识到这是旧 TFS 版本的问题,并且完全按照我在他们的补丁中提出的要求,故意放慢速度以防止崩溃。
    • 如果有,它就隐藏在注册表深处。
    【解决方案2】:

    从 intellij 访问我们的 tfs-git 存储库时,我遇到了类似的问题。突然间,它报错了unable to access <repo url>。请求的 URL 返回错误:503"。

    有什么帮助:

    在 intellij->VCS-git-> 遥控器中将 url 更改为 false 的(验证失败),然后返回有效的。

    在我的例子中,出现了一个登录请求,我终于重新获得了对 repo 的访问权限。

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2016-07-29
      相关资源
      最近更新 更多