我有一系列脚本正在做很多svn操作,耗时太长,我们不知道为什么。 例如
svn switch svn+ssh://srv/repo/... ...
这一贯持续大约1.1秒。 我们在RHEL 5.4上使用Subversion 1.6.6。
ssh srv exit的时间大约是80毫秒(我们一直在努力解决这个问题)! 所以时间不是在ssh中度过的。
在客户端和服务器上运行strace ,我看到这个( sv是服务器上的svnserve, cl是客户端):
sv 08:29:43.470772 close(4) = 0 sv 08:29:43.470839 unlink("/tmp/tempfile.tmp") = 0 sv 08:29:43.470937 write(1, "( success ( ) ) ", 16) = 16 sv 08:29:43.471062 read(0, "", 4096) = 0 cl 08:29:44.019452 unlink("/export/.../.svn/lock") = 0
所以似乎半秒钟就等不及了这个最后的阅读才能完成。 看看源代码,我猜这是在apr库中的读取超时。 我看不到subversion调用库的时间是否为非零(忽略HTML)。
有没有办法缩短这个超时时间,或者大大提高命令周转时间?
我们可以更新服务器版本,如果我们知道它会帮助,但不能升级客户端版本(因为有大约500个客户端系统在使用)。 如果需要,我们可以重新编译服务器或客户端。
谢谢