2012-08-24 99 views
1

怎么可能是这样的:svn ls -v需要比正常情况下的时间长250多长时间svn lsSVN ls命令超慢

即使使用file:// schema也没有关系使用哪种传输方式,这没什么区别。我也尝试启用memcached,但没有任何改进。

有趣的是,在顶层目录中,这个命令是最慢的,越深入,它越快。目录中有多少项目似乎并不重要。

我为客户端和服务器都使用svn版本1.7.1。和FSFS回购格式。

这里定时

svn ls -v svn://trac/koh/ 0.01s user 0.01s system 0% cpu 39.960 total 
svn ls svn://trac/koh/ 0.00s user 0.02s system 6% cpu 0.243 total 

回答

1

这可能是svn ls能够从工作目录在本地使用信息,同时svn ls -v必须返回到服务器,以获得所需的信息。它也可能是查询的信息量。 svn ls只需要文件名,而svn ls也需要修改和最后一个作者。

但是,我没有找到时间要长250倍:你是对所有客户端

$ time svn ls 

real 0m0.514s 
user 0m0.046s 
sys  0m0.061s 

$ time svn ls -v 

real 0m0.530s 
user 0m0.000s 
sys  0m0.109s 

会出现这种情况,或只是机器?这是Windows还是Unix/Linux?你试图列出的目录有多大?当您执行svn ls时,工作目录中是否有更改?或者,你是否一直在使用URL,所以它必须去服务器?你有没有注意到其他有速度问题的东西?

+0

相同的行为会发生不同的客户端机器,我永诺做LS的回购URL,不涉及工作副本。我的服务器运行FreeBSD,并且客户端是Windows,FreeBSD,OS X,它在任何地方都是一样的。目录的大小似乎并不重要,我的顶级目录只有4个条目,但列表最慢。回购本身虽然是55k大版本,并且在服务器上需要550GB。 – parceval

+0

一旦我可以通过URL连接到我的SVN存储库,就必须尝试一下。这可能是由于它必须获取的信息量:获取文件名与文件名,最后一次提交以及提交的作者。该名称可能很容易检索,但修订版和作者可能需要更深入的查询。 –

1

我发现“svn ls -v svn:// svn”会生成一个“get-locks”服务器日志消息,这是发生时间的地方。我们的存储库文件系统是NFS。许多“getattr”和“查找”NFS调用都会发生。所以出于某种原因,SVN服务器正在为获取锁定做很多属性。

我还没有发现有什么这样做的原因是尚未...