现在我的公司正在使用网络共享与 SVN 存储库进行通信。它真的很慢,所以我想切换到 SVNSERVE。
我的公司选择采用文件系统路线的主要原因是,使用我们现有的活动目录身份验证系统可以轻松确保安全。
根据我的阅读,只要您使用Sasl 库,就可以将 SvnServe 与活动目录一起使用。我只是想知道是否还有其他人正在这样做并且可以提供一些有关配置的指示,因为它似乎没有在任何地方记录。
谢谢
编辑
我们在快速服务器上安装了 svn,但不幸的是它被用于其他公司文件共享和服务。
我被告知 HTTP 协议不会比使用 SMB 的 file:// 更快。有没有人有这方面的任何文件。我认为真正的客户端服务器模型会表现得更好。我们有大约 13 名开发人员和一个构建服务器全天提交和更新。
走死简单的路线,只需安装 Visual SVN 服务器。
http://www.visualsvn.com/server/
将其安装在加入您的 Active Directory 的服务器上。您现在拥有带有 AD 身份验证的 SVN over http(s)。使用它附带的方便的花花公子 MMC 工具管理权限。从 0 到部署大约需要 15 分钟。
请注意,不建议对 SVN 存储库使用 file:// 访问权限,它更多地用于管理工具。文件访问的问题是您没有中间的服务器来确保所有写入都正确写入。所以尽快停止使用它。
Svnserve(或 Apache)要好得多,但您会遇到同样的性能问题 - 它不会变得更好,因为您的网络使用 http 或 svn 协议而不是 smb。如果您今天的访问速度很慢,那么它仍然会很慢,除非您对网络或文件系统进行一些处理(或其他任何使其变慢的事情)。
但是,迁移到 Apache 或 Svnserve 本身是值得的。
svnserve 和 sasl 库存在问题,最近在 svn 邮件列表中提到。问题是 svn 协议不允许纯文本,但 saslauthd 只允许纯文本身份验证。最终结果 -它只是不起作用,并且是一个已知问题。
不过,如果您在 Windows 上运行,也不是很糟糕,只需安装 VisualSVN Server。它是一个顶级包装,为您提供 Apache 安装,作为 Windows 服务运行,具有管理单元管理,以及在安装过程中只需单击单选按钮即可进行活动目录身份验证。您甚至可以将 acls 放在 repo 中的目录或文件上。
如果没有,我仍然推荐 Apache,因为它的配置有更好的文档记录,并且它确实支持 LDAP 身份验证(与 AD 一起使用)。有很多博客文章描述了如何做到这一点。
http 而不是 svn 的性能会更慢,但我怀疑你会注意到它,除非你并排安装并签出/提交一个大目录。试试看 - 你可以同时使用 Svnserve 提供 Apache 服务的 repo。(尽管我会在将其付诸实践之前验证该声明)。
抱歉,没有带有 Windows 身份验证的 Svnserve。尽管如此,我还是使用 Svnserve 和 SASL 并手动管理帐户,因为这里使用 SVN 的实际程序员数量非常少。
您愿意冒着 Windows 文件共享的风险来进行 SVN 的事实表明您一定处于绝望的境地,因此我建议您使用 SSL 而不是 Apache,在那里您可以获得Windows 身份验证。它使用 SSL 而不是 SVN,但已经足够接近了。给你:
mod_auth_sspi
在 Apache 中安装并在httpd.conf
CollabNet Subversion 服务器附带的服务器中进行设置。我同时运行 HTTPS 和 SVN,但个人更喜欢手动管理 SASL 帐户,这样我可以获得 SVN 协议的额外速度,这比 HTTPS 快一点。
简而言之,将 SVN 存储库从网络共享切换到 SVNServe 或 Apache/WebDAV 不会提高客户端的性能。如果有的话,客户会看到更差的性能。
当然,以上假设您打算继续在当前托管它的同一台服务器上运行存储库。如果您将 SVN 存储库移动到更强大的服务器,您可能会看到性能有所提高。
有没有检查过当前服务器是否过载?它是否也为许多非 SVN 客户端/文件提供服务?如果是这样,您可能会看到通过将 SVN 存储库移动到专用服务器来提高性能。如果您在一台服务器上有多个存储库,请考虑将它们拆分到多台服务器上。(如果需要,您可以将现有的单个存储库拆分为多个存储库以帮助解决此问题。)
但是,实际上,您需要弄清楚为什么现有性能很差。首先分析当前服务器上的负载。性能通常受到某些系统资源容量的限制,主要是您的 RAM、CPU、磁盘 I/O 速率、网络 I/O 容量。尝试回答以下问题:
你的 CPU 是 100% 固定的,还是有很多空闲周期?CPU 使用率可能会有所不同,但如果平均为 100% 或接近 100%,那么您可能需要更多/更快的 CPU。
您有多少可用 RAM(占总数的百分比)?您使用了多少交换空间(同样,占总数的百分比)?如果您的可用 RAM 少于 10%,则您可能会用完 RAM,这会迫使系统改为使用磁盘交换。这会减慢一切,但对您来说更糟,因为交换与 SVN 活动竞争有限的磁盘 I/O。
您每秒向/从磁盘移动多少数据(批量传输)?您的磁盘每秒执行多少次寻道?你的磁盘队列有多长?您的服务器磁盘应针对批量数据传输和查找速率进行评级。(如果没有,您可以自己对它们进行基准测试。)如果您的平均传输和查找速率达到或接近最大值,则需要使用更快的磁盘。如果您使用 RAID,请以提高性能的方式添加更多磁盘。如果您不使用 RAID,请开始使用它。
您每秒向/从服务器传输多少网络数据?如果该速率接近额定最大值的 80-90%(例如,10Mbit/s、100Mbit/s、1Gbit/s),则您可能已达到网络链路的限制。(请注意,较便宜的 NIC 或坏驱动程序的最大值可能会大大降低 - 对您的链接进行基准测试以确保。)尝试升级到更快的链接,或查看您的 NIC 驱动程序是否支持绑定(也称为“链接聚合”或“通道绑定” ) 以提高性能。
鉴于您的环境中这些问题的答案,请尝试增加任何有限资源的容量。这可能意味着服务器升级或更换,或者可能是网络升级。
它不完全相同,但我在 Linux 服务器上有一个 svn 存储库。服务器没有运行 svnserve,但允许用户通过 ssh 使用 svn。由于 Linux 服务器是 AD 成员服务器,并且用户也来自 AD,因此这是一个非常简单和安全的解决方案。