我被迫使用位于我们 Windows 域中的 Visual-svn-server。问题是使用windows客户端速度超级慢。奇怪的是,同一个存储库在 Linux 客户端上速度非常快。差别就像 3 秒和 90 秒一样。我知道应该有人修复服务器,而不是我尝试修复客户端,但我没有改变这样做。
因此,为了调试这个问题,我使用wireshark进行了一些包捕获,看起来就像Windows一样,在执行“svn up”(在最新存储库上)时,在与实际的svn服务器再次对话之前会进行大量的ldap协商。这需要时间。 Linux svn 客户端在执行“svn up”时不会执行任何 ldap 调用。问题不在我的机器上,而是在我所有同事的 Windows 客户端上。
我尝试使用配置选项 http-auth-types 强制 svn 客户端进行“基本”身份验证(http://svnbook.red-bean.com/en/1.7/svn.advanced.confarea.html),但是它没有帮助。我认为这将是基本的,没有 ldap,http-basic-auth。我能够确认该设置已包含在内,因为将其设置为“摘要”表示身份验证方法不可用。但即使这样也需要大约 60 秒,所以我的猜测是它在尝试进行身份验证之前做了 ldap-wacko 的事情。
我使用的 subversion 客户端是来自 tortoise svn 官方版本的 1.8 系列。我也尝试过 slicksvn 客户端,它确实有同样的问题。 svn 版本显示 ra_serf 正在处理 https 请求,我的存储库是位于
https://my_server_intra_dns_name/
的 Visual-svn 服务器
当用浏览器打开地址时,它又很快了,所以问题不应该是dns或类似的问题。
我是 Linux 爱好者,所以我对 Windows 有点迷茫,但是有人知道这里发生了什么吗?
----编辑---- 我还在 Windows 主机上使用了 Linux 作为来宾操作系统,在 Linux 中执行 svn up 大约需要 3 秒,与本机 Windows 'svn.exe up' 相比,需要花费一分钟!
如果 Windows 计算机与 Internet 的连接有限,那么您可能会注意到通过 HTTPS 对远程存储库运行 Subversion 客户端命令时的延迟。
使用流量分析器,您可以注意到,当 Windows 尝试访问
ctldl.windowsupdate.com
并超时时,就会发生延迟。 Windows 尝试访问 ctldl.windowsupdate.com
以检查 证书信任列表(即证书吊销列表)。由于互联网连接有限,Windows 可能无法访问它,从而导致这些延迟。
如果不是您的情况,那么我建议联系 VisualSVN 的支持团队进行调查。
就我而言,这是由于 Windows 代理设置 - 您在 IE 中设置的(我使用 TortoiseSVN 客户端,Visual SVN 服务器设置为使用基本身份验证)。
在我根据 IE 代理设置(对我来说是自动的,但对你来说可能有所不同)设置后,初始延迟消失了。
即使 svn 服务器位于本地 LAN 上,并且我已经使用 Wireshark 检查流量是否通过代理,它还是有帮助的。在乌龟中我禁用了代理。为什么它对我的问题有帮助 - 不知道。
我最初的延迟是 11-13 秒。现在几乎没有。
而且我没有使用 ssh 客户端。
使用浏览器访问 SVN 服务器的 http(s) 位置:IE、Fireofx 等等,如果响应很快,那么很可能是 svn 客户端问题,或者由于一些类似的设置(类似于您的浏览器设置)。
例如 IE 很慢(IE 之前仅设置为本地连接),Firefox(具有正确的代理设置)则正常 - 并且 SVN 服务器是本地的(对我来说听起来像是某种网络/防火墙/路由问题,但代理设置对我有帮助)。
在我的例子中,修复是编辑我的 C:\windows\system32\drivers tc\hosts 文件,为我的 SVN 服务器添加一个条目。
SVN 正在做一些奇怪的 DNS 事情,这些事情在 Windows 上无法正常工作,因为它需要很长时间。 这似乎绕过了。