9

我的公司目前在 Windows XP 上使用 TortoiseSVN 1.6.16 32 位通过 HTTPS 连接到位于同一网络(无代理)的 Windows Server 2003 上运行的 VisualSVN-Server 2.1.19。我们使用自签名证书和使用 Windows 凭据的 Kerberos 身份验证(我想这是 VisualSVN 特有的功能)。在此设置中,一切正常。

当我的公司决定迁移到 Windows 7 时,我们在 Windows 7 64 位上尝试了 TortoiseSVN 1.7.6 64 位,结果出现以下问题:

  • 任何涉及服务器的操作(repo-browser、checkout、update、checkin、...)都非常慢,例如
    • 打开 repo 浏览器(10 个项目):15 分钟
    • 更新 50 个文件的新签出:1 分钟
    • 签入单个空文件:30 秒
  • 乌龟交替显示正常传输速度和 0 字节/秒。许多小文件似乎比一些大文件慢。
  • 使用 neon 作为 http-lib 时连接慢导致各种失败(serf 仍然很慢,但操作成功完成且没有错误)
  • EasySVN、SmartSVN 和 TortoiseSVN 附带的 SVN 命令行客户端显示相同的行为。与 TortoiseSVN 1.6.16 64 位相同。
  • 将服务器协议更改为 HTTP(无 SSL)并不能改善这种情况

另一方面

  • Windows XP 上的 TortoiseSVN 1.7.6 32 位在我们的服务器上运行良好
  • 通过浏览器/WebDAV 访问即使在 Windows 7 下也能正常工作
  • 服务器端日志不显示错误甚至警告

我发现几个帖子也抱怨 Windows 7 上的缓慢行为,但它们不符合我的要求,因为它们是本地操作或仅限于 TortoiseSVN。

由于没有迹象表明 Windows 7 上的 Subversion 存在一般问题,我怀疑这可能是我们操作系统的网络参数或协议版本。是否有任何已知会影响 Subversion 性能的参数?

我不得不承认我不熟悉 Subversion(或者更确切地说是 neon/serf)是如何依赖操作系统以及依赖于哪些部分的。任何有关这方面的信息将不胜感激。

我应该测试的 subversion 'servers' 文件中是否有任何参数?您如何看待 Wiresharking 连接对我有帮助的机会?

欢迎类似的经验、意见、提示、帮助和吸管。

Wireshark 显示 ca 的零星间隙。TCP 流中的 5 秒显然是由 VisualSVN 服务器引起的。

  • https:服务器确认客户端问候,然后等待 5 秒,然后再发送服务器问候
  • https:服务器确认客户端密钥,然后在提供其加密握手数据之前需要 5 秒
  • https:即使在握手之外,服务器有时也会发送一个 ACK​​(在 TCP 级别),然后等待 5 秒,然后再将某些内容发送回客户端(数据是加密的,因此很难判断中断是否发生在某个感兴趣的点)
  • http:在 NTLM 身份验证期间在两个服务器端传输
  • http:在服务器发送 FIN 标志之前
4

4 回答 4

7

Windows 7 对旧服务器的典型失败是 IPv6 网络。

如果您的机器没有侦听 IPv6 地址的 SVN 服务器,Windows 7 可能仍会首先尝试进行 TCP6 连接(如果您在尝试操作时查看 TortoiseSVN 进程的打开套接字,则可以在Process Explorer中看到它),这有几秒钟的超时,然后用 IPv4 重试。

简单的解决方案是将您的服务器升级到支持 IPv6 的服务器,或者为 Windows 7 客户端禁用 IPv6。

于 2012-06-02T16:12:32.497 回答
4

您可以验证的另一件事(上面的答案对我们不起作用)是 Internet Explorer 设置,特别是如果您有 IE9。我们发现通过禁用 中的选项Automatically detect settingsInternet Options -> Connection tab -> LAN settingsSVN 又开始正常工作了。

于 2013-02-08T18:01:44.000 回答
0

这个问题从未得到妥善解决。最有可能的是,客户端和服务器之间的公司内部网络路径出现了某种故障。当我们将 SVN 服务器移到另一台机器上时,这件事就过时了。即使在 Windows 7 中,服务器和客户端的相同设置现在也可以正常工作。

于 2014-04-17T06:01:35.583 回答
0

我有相同的症状,即存储库浏览速度非常慢、更新速度慢、一切都变慢。

我的 SVN 服务器有两个以太网卡,所以它有两个以太网 IP 地址。SVN 服务器只监听其中一个 IP 地址。因此,通过 WINS 或 NetBIOS 的名称解析可能会解析为“错误”的 IP 地址。

TortoiseSVN 会重试,最终名称解析会找到“正确”的 IP 地址,然后一切正常。

于 2014-11-06T16:12:52.503 回答