Atlassian坩埚在大型存储库上非常慢


8

我的公司已经对Atlassian坩埚进行了几个月的试验。对于正常运行的存储库,用户对该工具给出了非常积极的反馈。我遇到的问题是我们有几个不同的项目,每个项目都有自己的存储库,其中一些存储库非常大。特别地,一个存储库具有大量分支,每个分支大概有9,000个文件。在Crucible中浏览该存储库非常慢。

Crucible在CentOS VM上运行。该虚拟机具有4GB的RAM,我将Crucible的最大值设置为3GB,其中当前正在使用2GB。我已经在Atlassian的支持通知单中提出了这个问题,他们提出了以下建议:

特别是因为您有一个相当大的SVN存储库,您可能会发现Fisheye将在磁盘上创建一个大型索引文件。为了帮助提高性能,您可以尝试以下操作:

我已经在某种程度上尝试了所有这些方法,但是到目前为止,都没有太大的帮助。我最初使用内置的HSQL DB在具有2GB RAM的Windows机器上运行Crucible。在CentOS上迁移到MySQL可以看到某些存储库的性能提高,并使Crucible更加稳定,但是对于我们最大的存储库似乎并没有太大帮助。在保持工具有用性的同时,我可以从索引中排除的文件/分支如此之多。

既然如此,有没有人有任何关于如何在大型存储库上加速Crucible的提示,而无需投资于功能强大的硬件?

谢谢!

编辑:澄清一下,因为我上面没有明确提到,所以使用的是FishEye。

编辑2:自从我最初发布此内容以来,新的Crucible版本的性能有所改善,但是无论如何仍然不是很好。看来此问题影响了许多用户,包括一些硬件功能比我们使用的功能强大得多的用户。因此,我不认为这是硬件问题,而是坩埚内在效率低下的问题。Atlassian意识到了这个问题,并将在未来的发行版中包括进一步的性能改进,因此希望这些更改能够解决我们的问题。

编辑3:我忘记了多久以前问这个问题,所以在我以前的编辑中,我没有提到自从最初提出要求以来,我们的硬件情况也发生了变化。我们现在仍在使用CentOS在专用的物理服务器上运行Crucible。硬件仍然很少(RAID 1中有4GB RAM,四核CPU和双500GB磁盘以及外部备份),但是当我们离开虚拟机时,确实看到了稍微的性能提升。


我知道这是一个古老的问题,但是仅供参考,以我通过(非常有限的)最近的经验(将数据库移动到外部PostgreSQL实例),可以大大提高大型存储库的速度(显然,这是假设该计算机是足够强大,可以运行一个大小合适的postgres实例;我还对硬件的vaccume设置进行了一些调整,但开箱即用,速度更快)。这将大大减少磁盘访问时间,并且性能和可用性远远优于mysql(或者至少是fecru)
Sam

Answers:


2

由于迁移到MySQL对于某些存储库有明显的不同,因此请考虑调整数据库以进行进一步的改进。my.cnf从默认值更改一些值会产生很大的不同。有关更多信息,请参见InnoDB性能优化基础。还可以通过启用慢速查询日志并在适当的地方添加索引来检查慢速查询。

我的下一个猜测是网络速度:您的Crucible实例是否与SVN存储库位于同一有线本地网络上?如果可能,您还可以尝试在与主存储库相同的计算机上运行Crucible的尝试,以消除造成问题的网络延迟。

而且我知道根据您的工作环境可能会很困难,但是在VM中运行Crucible可能无济于事。Atlassian在其简短的“坩埚配置最佳实践”页面上对此进行了说明。我相信您已经了解过它,但是我还将为其他读者提及Tuning FishEye页面。

对于大型项目,我也遇到性能问题,但很大程度上归因于Crucible繁琐的Web界面。单击几下后尤其如此(评论中以前查看过的页面即使在看不见的情况下仍保留在浏览器窗口中)。我们的开发人员注意到,改用Google Chrome浏览器后,速度有所提高。如果您的开发环境中存在兼容的插件,还请检查Atlassian IDE连接器。我上次使用它(很多个月前)时,Eclipse IDE Con​​nector就有它自己的问题,但是它至少可以处理大型文件集而不会挂断。

根据公司的开发实践,您可以停止扫描大量代码分支(假设其中许多不再处于活动状态),并禁用已完成/无效项目的存储库,直到需要它们为止。我的公司在很多项目中都使用非常小的团队,因此大多数时候我们主要从事trunk,使分支成为例外。因此,我们明确添加了要扫描的分支,而不是默认情况下包括所有分支。另外,请确保您没有意外扫描标签。

坩埚盒上的CPU使用率如何?如果您在Apache HTTPD之后使用SVN,请检查在大型存储库扫描期间Crucible消耗了多少连接。除此之外,我不确定您还能看到什么(也许是磁盘速度?存储库扫描频率?),但是希望以上技巧对您有所帮助。


感谢您的详细回复。我更新了原始问题,因为我忘了在先前的编辑中包含更新的硬件信息。网络速度可能是初始索引编制中的一个问题,但是一旦创建了索引就不会造成问题(这是我们在浏览索引文件时会遇到很多麻烦的地方。)我们最终还是将Crucible移到了专用的物理盒中并看到了适度的性能提升。我们的大多数开发人员都使用Chrome,并且我已经警告所有使用Crucible的人不要使用IE,因为它的JavaScript引擎(无论如何还是在IE9之前)都非常慢。
米奇·林格伦

我不知道以前查看过的文件会保存在内存中,所以我一定会告诉大家在速度变慢时进行刷新。仅供参考,不过Atlassian已完全放弃了对Eclipse连接器的支持,对此我有很多抱怨。它们确实具有用于其他IDE的连接器,但是Eclipse对我们来说是一个很大的连接器。至于分支机构,我们的一些团队不使用它们,而有些则广泛使用。不使用分支的团队很好。确实遇到严重问题的团队。不幸的是,要求他们更改流程是不可能的。
米奇·林格伦

我之前已经研究过MySQL的性能,并将再次进行。不过,看起来瓶颈很大,只是遍历了索引文件。更快的磁盘可能会有所帮助,但是我们的磁盘已经非常快了(尽管不是最重要的。在转移到新服务器之前,我看到了很多IO等待,但是我看不到太多了。)我现在所能做的就是等待Atlassian吹捧的性能改进。不过,我会将您的答案标记为已接受,因为我认为该答案包含了许多可能对相同情况的其他人有用的信息。
米奇·林格伦

1

> 4 G的RAM不是“功能强大”的硬件。假设您有25个用户,并且您使用的是Fisheye(您提到),则仅在该软件上花费4400美元。戴尔的$ 4k可以为您购买一台具有48G RAM的服务器。

另外,您是否正在使用64位JVM?该文档建议您将在32位JVM上看到更好的内存占用(更少)。


谢谢(你的)信息。我们正在使用64位JVM。我将查看是否可以切换到32位,并查看是否有帮助。编辑:糟糕-按Enter键,它保存了我的评论,而不是添加新行。我的错。关于硬件,这是一个棘手的问题:22硬件情况超出了我的控制范围,在我知道该工具将对所有需要使用该工具的团队有效之前,我很难证明增加支出是合理的。我将看看是否可以对现有设置进行任何处理(例如,为该VM分配更多的内存。)
Mitch Lindgren 2010年

道歉,请重复评论,但还有另一个问题:您是否确信内存是问题所在?我意识到4GB并不是很多,但是Fisheye / Crucible甚至都没有最大化我在JVM上设置的3GB最大值。
米奇·林格伦

我不确定这是否是您的问题,但我只是指出这不是“强大的功能”。当它运行不佳时,您可以收集一些系统统计信息吗?运行topiostat然后执行任何操作,然后查看有什么问题。
Bill Weiss 2010年

“疯狂强大”是一个糟糕的选择。我只是觉得4000美元的服务器和48GB的内存对于Web应用程序是一个过分的要求,因此很少有开发人员使用它。
米奇·林格伦

3
$ 4400/25个用户/ 2年== $ 88 / dev / year。一年必须节省多少开发时间?
Bill Weiss,2010年

0

虽然我自己实际上还没有尝试过,但我遇到的症状与您完全相同。

我目前正在考虑关闭有问题的存储库的已存储差异信息。我在Atlassian的问答网站上问了这个问题,并得到了一些有希望的建议。

我的问题是一样的-索引不是问题,这是在VM中性能不佳的磁盘阵列上运行的巨大磁盘空间。由于我目前无法升级磁盘,因此需要找到另一种解决方法。我上面的帖子中的回答者说,删除差异信息将减少磁盘占用空间,但会失去搜索添加/删除的行的能力。尽管他还建议这样做不会影响浏览历史悠久的文件的速度。

如果其他人看到此消息并可以通过此开关报告成功/失败,请在此处评论。

哦,我在运行2.7.13时遇到了相同的性能问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.