Subversion在Windows 7上的速度令人难以忍受

wol*_*ile 9 svn performance tortoisesvn visualsvn-server windows-7

我的公司目前在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-browser(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位可以正常使用我们的服务器
  • 即使在Windows 7下,通过浏览器/ WebDAV访问也能正常工作
  • 服务器端日志不显示错误甚至警告

我发现有几个帖子也抱怨Windows 7的行为缓慢,但它们不适合我的账单,因为它们是本地操作或仅限于TortoiseSVN.

由于没有迹象表明Windows 7上的Subversion存在普遍问题,我怀疑它可能是我们的操作系统的网络参数或协议版本.是否有任何参数可以影响Subversion的性能?

我不得不承认我并不熟悉Subversion(或者更确切地说是neon/serf)究竟依赖于OS和哪些部分.任何有关这方面的信息将不胜感激.

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

欢迎提供类似的经验,意见,提示,帮助和吸管.

Wireshark显示了零星的零星间隙.TCP流中5秒显然是由VisualSVN Server引起的.

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

sch*_*enk 7

Windows 7针对旧服务器的典型故障是IPv6网络.

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

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


wol*_*ile 0

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