SVN/TortoiseSVN 非常缓慢

63

我正在经历我们其中一个SVN仓库/项目的操作非常缓慢。

例如,撤销一个小文件(10 KB)中的更改需要5-10分钟。或者检出100 MB的项目需要大约40-60分钟。

在同一服务器上有大约30个其他项目,有些比这个大得多,但它们都没有这样的表现。

需要注意的一件事是,这个项目是一个Magento项目。从磁盘空间的角度来看,它并不是很大,但我有23k个文件和11k个文件夹,并且我已经读到当有大量小文件时,SVN表现不佳;这是真的吗?有什么我可以做来加快速度吗?


你在服务器上使用什么存储库格式?FS?BDB?你可以尝试使用不同的格式。 - 1800 INFORMATION
1
伙计,这不正常,甚至远远超出了正常的svn速度。你应该质疑谁在管理你的svn服务器/存储库以及那个服务器在运行什么。它有1GB内存还是什么奇怪的东西?我不知道为什么答案声称你所描述的是正常的,因为它不是。只有在开发团队管理不善或者svn存储库缺乏维护的情况下才会出现这种情况。这是不可接受的。 - PositiveGuy
如果有人正在寻找类似问题的帮助:我的设置也非常缓慢:win7,eclipse,visualsvn。将JavaHL更改为本地Win实现后,速度飞快。 - Dirk Schumacher
9个回答

58

如果有大量目录,例如您的情况,Subversion工作副本的性能会非常差。对于对工作副本的写操作(即使只是在本地),工作副本必须被锁定,这意味着在每个目录中创建一个锁定文件(也就是说,要创建11k个文件),然后执行操作,最后再删除那些11k个文件。

Subversion 1.7正在转向不同的工作副本格式,应该解决这些问题。在此之前,您可以尝试一些技巧来加快速度,例如将工作副本从病毒扫描器中排除、在目录上禁用文件监视器(如TortoiseSvnCache)以及尝试减少目录总数(例如通过检出几个单独的工作副本)。


1
我不明白。我曾经在3-4家公司使用Tortoise SVN工作,从未见过如此缓慢的情况,我们还有1 GB的项目!现在我来到了一个新公司,看到这样的帖子让我感到震惊,下载一个300 MB的.NET项目要花费我数小时的时间。 - PositiveGuy
1
又是一个公司,速度好慢...我见过其他公司的v1.6比这快多了,这是怎么回事。 - PositiveGuy
1
四年过去了,最近的评论仍然是:SVN速度极慢。我正在处理一个大型项目,大约有2-3GB大小和许多目录。我已经接受了这个事实,无法对整个项目进行“提交”或“更新”。必须分块完成,大致上要分成10个子文件夹。更新有时可以通过,因为我猜它不会获取太多锁定。 - Colm Bhandal
这可能只取决于项目的结构和小文件的数量。在我的工作地点,我们有达到 17GB 的项目,它们更新/提交都很顺利。 :/ - vdwtanner
2
说服你的公司为了上帝的缘故迁移到Git - Dev_NIX

20

在使用回收站进行还原时会出现已知问题,会导致还原变得缓慢。清空您的回收站并设置TortoiseSVN在还原操作期间不使用它可以加速此操作(请参见http://www.nabble.com/Revert-is-too-slow-td18222196.html)。

这确实加快了我的还原操作。


2
我遇到了相同的问题多次,我的经验是回收站是罪魁祸首。 - Josh Kodroff
1
回收站不会影响结帐性能。 - Sander Rijken
我使用的是TortoiseSVN 1.7.6,还原仍然非常缓慢,但我的回收站也很慢 - 我总是使用 shift-delete 进行永久删除。我刚刚更改了 Tortoise 的设置:设置对话框->对话框1->"在还原时使用回收站"。我打赌这将会有所帮助!谢谢! - AnneTheAgile
链接(有效地)已经失效。它重定向到主页,http://www.nabble.com/。 - Peter Mortensen

11

我在Windows上更改密码后,Subversion变得极其缓慢。 我不得不删除%APPDATA%\Subversion\auth中的所有目录和文件。

现在SVN像野兔一样快了起来。 我在TortoiseSVN和命令行中都遇到了缓慢的情况。


3
我有同样的问题,在我的情况下,删除"auth"文件夹真的很有帮助。 - Askar Kalykov
3
这真的救了我的一天。 - Sergejs Rižovs
4
对于我在Windows 10上,它位于C:\Users\用户名\AppData\Roaming\Subversion\auth。 - Alireza Fattahi
1
%APPDATA% 通常会扩展为 "C:\Users\UserName\AppData\Roaming"。 - DarkFranX

7

如果你在工作副本中使用NFS(网络文件系统),那么SVN会变得很慢。这可能是你遇到的问题。


4
Windows 支持 NFS。 - Lightness Races in Orbit

2

1
我们的 SVN 在 TortoiseSVN、Eclipse 和命令行中运行非常缓慢。提交和导出都很慢。我们基于 Zend Framework 的 PHP 项目需要很长时间才能更新,只是提交大约三个文件就需要 5-10 分钟。
我们的 SVN 虚拟机 (CentOS) 只有 700 MB 的内存,这对于仅通过 Apache 运行 Subversion 的 Linux CLI 来说似乎是合理的,已经正常运行了一年左右。我们只有大约 20 个项目,三名开发人员。
我已经将其升级到了 1.5 GB 的内存,现在运行得快多了,回到了我们以前的速度。

1

在SVN中还原更改是一个本地操作,根本不应该传到服务器。因此,问题似乎出现在您的项目工作副本中。

尝试在工作副本中运行“svn cleanup”命令;您还可以检查硬盘或文件系统是否存在问题。


所有用户都共享一台机器吗?还是每个用户的工作站上都会发生这种情况? - Avi

1

我在升级到TortoiseSVN 1.7.3后也遇到了严重的减速问题。

后来我发现我还安装了一个单独的SVN 1.6.5版本。我卸载了两个版本并重新安装了TortoiseSVN,现在情况好多了。第一次在TortoiseSVN中更新需要较长时间(1-2分钟),但之后就很快了。


0

我有一些项目使用Eclipse IDE。如果你捕获Eclipse项目目录,你会得到成百上千个微小的文件,这对我的项目产生了与你所遇到的问题相同的影响。

我认为当你检出SVN文件时,它是逐个进行的,这意味着具有大量文件的项目始终会很慢,除了避免频繁的整个存储库操作外,你无能为力。

但更改单个文件不应该很慢。

你可以尝试Stack Overflow上关于慢SVN的另一篇文章中的建议。这也可能是由于使用BDB数据库造成的。


2
它与数据库后端没有任何关系,因为还原文件是一种仅限本地的操作。 SVN也不会逐个检出文件,而是对文件树进行操作。 - Sander Rijken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接