【问题标题】:SVN ls command super slowSVN ls 命令超级慢
【发布时间】:2012-08-20 01:10:05
【问题描述】:

svn ls -v 怎么可能比普通的 svn ls 需要大约 250 长?

即使使用 file:// 模式,我使用哪种传输似乎也没有什么区别。我也尝试过启用 memcached,但也没有任何改进。

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

我在客户端和服务器上都使用 svn 版本 1.7.1。和 FSFS repo 格式。

这里是时间

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

【问题讨论】:

    标签: performance svn memcached fsfs


    【解决方案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,所以它必须转到服务器?您是否注意到其他任何速度问题?

    【讨论】:

    • 相同的行为发生在不同的客户端机器上,我总是对 repo URL 执行 ls,不涉及工作副本。我的服务器运行 FreeBSD,客户端是 windows、FreeBSD、OS X,到处都一样。目录的大小似乎无关紧要,我的顶级目录只有 4 个条目,但列出速度最慢。 Repo 本身虽然有 55k 的修订版,但在服务器上占用了 550GB。
    • 一旦我可以通过 URL 连接到我的 SVN 存储库,我将不得不尝试它。这可能是由于它必须获取的信息量:仅获取文件名与文件名、最后一次提交和提交的作者。名称可能很容易检索,但修订和作者可能需要更深入的查询。
    【解决方案2】:

    我发现“svn ls -v svn://svn”会导致“get-locks”服务器日志消息,这是花费时间的地方。我们的存储库文件系统是 NFS。许多“getattr”和“lookup”NFS 调用发生。因此,出于某种原因,SVN 服务器正在为 get-locks 进行大量属性获取。

    我还没找到这是什么原因……

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 2013-05-22
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多