3

当工作副本在 NFS 上运行时,有没有办法提高 svn 的性能?

(*) 必须是和 NFS 挂载的分区 (/home)。

我猜 SVN 客户端在提交时会读取整个树以查找更改。我不知道什么会使结帐变慢。

4

3 回答 3

3

根据颠覆常见问题解答

工作副本可以存储在 NFS 上(一种常见的情况是您的主目录位于 NFS 服务器上)。在 Linux NFS 服务器上,由于在签出文件时 Subversion 内部使用的重命名量,一些用户报告说应该禁用“子树检查”(默认情况下启用)。有关如何禁用子树检查的更多信息,请参阅NFS Howto Server Guide and exports(5)。

结帐性能可能会受到几个因素的限制,但在您的情况下,最有可能是该 NFS 挂载的 I/O - 除非您的网络连接饱和,或者服务器尺寸过小。

于 2013-07-09T17:21:31.230 回答
0

使用“nolock”选项进行挂载。它实际上是操作系统本地锁,而不是 NFS 服务器端锁。

我从这个选项中获得了更好的性能。

于 2015-09-27T03:46:57.710 回答
-1

NFS 上的结帐性能非常糟糕,以至于它成为主要瓶颈,而不是 Subversion 服务器的带宽。Bryce Denney 和 Wilson Snyder 的rsvn是一个 perl 脚本,它使用 ssh(假设允许)登录到 NFS 服务器并远程运行 svn 命令。在我的测试中,它提供了数量级更快的性能。摘自手册页:

姓名

rsvn - 远程 svn - 如果可能,在文件服务器上运行颠覆命令

概要

rsvn ANY_SVN_COMMAND rsvn update rsvn --test

描述

如果可能,请在不必等待 NFS 的文件服务器上运行 svn 命令。否则像往常一样运行 svn。一些 SVN 命令将始终在本地运行,要么是为了“安全”,要么是因为在文件服务器上运行没有好处(svn 日志)。

默认情况下将发送到文件服务器的命令是这些(及其缩写):

add checkout cleanup diff merge resolved
revert status switch update

为什么提交不能远程运行?因为它要么会启动一个编辑器,但它并不总是通过非交互式 SSH 工作,或者你可能会使用 -m "FOO BAR" 并且 shell 的引用被搞砸了。弄清楚如何解决这些问题并将“提交”添加到列表中会很好。

于 2013-12-19T02:47:01.970 回答