在我们的实时服务器上运行svn update
有时需要超过 15 分钟才能完成。
- 我们的存储库非常小,大约 1Mb 约 100 个文件(这是一个小网站)
- 我们有几个开发人员同时进行提交/更新,这工作得很好
- 我们更新了服务器上的所有更改(仅更新
svn update
),而且运行速度非常缓慢 - 我们从来没有
svn commit
从服务器上做过(它应该是我们网站的只读版本)
随着时间的推移,它在服务器上的执行似乎变得越来越慢svn update
,即使它只是一个需要更新的文件。我开始认为我们服务器上存储库的“年龄”与它有多慢有关?如果是这样,我们可以做些什么来加快速度?
更新#1
我仍然认为“年龄”与svn update
缓慢有关,但可能必须考虑当服务器上的存储库“年龄”时实际发生的情况......
我认为这是以下原因:
- 自 2010 年 1 月以来,我们已经检查了 WebsiteA 上的存储库(使用
svn checkout
)并定期更新(使用)svn update
- 我们还以相同的方式在 WebsiteZ 上检查了相同的存储库,但这发生在几天前,即 2012 年 7 月
- WebsiteA 和 WebsiteZ 都在同一个物理服务器上,并且都使用同一个存储库
- 在 WebsiteA 上运行
svn update
以从修订版 100 更新到 101 需要 20 多分钟 - 在 WebsiteZ 上运行
svn update
以从修订版 100 更新到 101 只需几秒钟
我能看到的这些网站之间的唯一区别是 WebsiteA 存在的时间更长一些。WebsiteA 中可能有一些额外的文件(缓存内容),尽管这非常少(少于 20 个文件),并且包含缓存文件的目录已使用 svn:ignore 设置为忽略所有文件。
我想我不能排除网络问题,但我假设 WebsiteA 和 WebsiteZ 将运行相同的防火墙设置,如果有规则,它将是“阻止”而不是“延迟”。由于两个网站都在同一台服务器上,我认为它们都应该在相同的时间内更新网络问题。
更新#2
值得注意的是,如果我们这样做svn update file.txt
,它会运行得非常快。就好像 svn 正在比较我们在目录中的所有内容,只是为了找出要更新的内容。
更新#3
我们最终升级了 svn 并升级了所有签出的版本。svn update
现在似乎跑得更快了,手指交叉保持这种状态。谢谢大家帮忙!!
更新#4
当然,重新结帐可以解决问题,但只能持续几天/几周。我想今天终于找到了svn慢的原因。我们使用 Zend_Auth 并在每个页面上调用 Zend_Auth::hasIdentity() 来检查用户是否登录。这个调用创建了一个会话,而会话又在服务器上创建了一个会话文件。如果浏览器(或 googlebot)在关闭 cookie 的情况下浏览,我们会为每个请求创建一个会话文件。因此我们的会话目录有数百万个文件。我们删除了目录中的文件,并修复了通过在调用 hasIdentity() 之前检查 cookie 是否已设置来确定用户是否登录的方式。svn
现在更新运行时间 <30 秒。