2009-10-29 79 views
2

我们有一个3.5 Gb的SVN仓库最近从一个6 GB的移植。我们保留所有内部制作的软件和许多小型共享组件。我们也做了很多标签。项目保留了它的二进制依赖关系的副本,主要是libs。我们现在无法移动到GIT。颠覆性能调整

对我们开发人员的第一印象是,Subversion非常慢,我一直告诉他们历史相关的操作,但也有优点。

该访问是通过mod_dav_svn与自定义验证。随着我们每年外包一些项目并需要详细的安全规则,授权将以提交后挂钩实施。

我们要优化访问,以便:

  • 难道 '的svn包'。
  • 实施身份验证缓存。
  • 准备评估svnserve。

我们的代码库的布局如下:

\root 
\proyect1 
    \trunk 
    <files> 
    \docs 
    \branches 
    \tags 
    \proyect1-1.2.3-beta 
    <files> 
    \proyect1-1.3.0 
    <files> 
    etc... 
. 
. 
. 
\proyectn 

是否有其他的优化而不是硬件相关的,以前显示的成功?我们的文件的布局能否改变?

+0

注意,这个问题会更适合于serverfault.com。 – RedGlyph 2009-10-29 18:57:26

+0

我同意,我不知道serverfault存在= d – Abdul 2009-10-29 20:00:38

+0

你可以复制的问题在那里,你可能会得到更多的答案。我认为这不符合网站政策。 – RedGlyph 2009-10-29 20:50:06

回答

5

我只会对我所经历过的部分发表评论。

1)首先,它很大!通常情况下,最好将二进制文件和库保存在存储库之外,即使将所有内容放在一起有时也更方便。我们有这样的项目(我工作的地方)的文件没有存放在仓库中,而且占用了很多地方。它在每次结账或重要提交时都会杀死服务器,其他项目都很好。

分离项目通常也是一个好主意,svn:externals你有足够的灵活性将它们链接在一起(如果有必要),避免单点故障问题,巨大的存储库大小,更容易进行备份等等上。

但是你不能总是选择这些参数。

2)它是Linux的Apache服务器,还是它在Windows上运行?我已经看到了两者之间的差异,Windows版本往往比较慢并且对配置非常敏感。

3)我会用svnserve而不是Apache mod_dav_svn做测试。网络上的负载较轻,当许多人共享相同的服务器时(也取决于网络配置),这也可能是一个阻塞点。

4)你使用的是1.5还是更好的1.6?文件系统已经得到改进,并且如果您已经从先前版本迁移,则通常执行转储/加载支付(check this link also)。我们对大型软件库进行了一些测试,并且获得了几个百分点,但是我们观察到的结果有很大差异。

5)此外,您还可以考虑这个(从Version Control with Subversion) - 虽然我从来没有尝试过这个特殊的可能性:

对于Subversion 1。在图6中,FSFS文件系统具有多个可配置参数,管理员可以使用这些参数来微调其存储库的性能或磁盘使用情况。您可以在存储库的db/fsfs.conf文件中找到这些选项及其文档。

6)如果钩子脚本执行不当,会给服务器交互带来额外的延迟。 7)TortoiseSVN使用日志缓存,它有时很烦人(它倾向于锁定你无法删除的文件 - 如果你不知道它会令人惊讶),但在浏览时为用户提供更快的响应日志(除了在Windows上是一个集成良好的客户端)。