大規模なリポジトリでAtlassian Crucibleが非常に遅い


8

私の会社では、アトラシアンクルーシブルの試験を数か月間続けています。リポジトリが適切に機能している場合、ユーザーはツールについて非常に肯定的なフィードバックを提供しています。私が抱えている問題は、いくつかの異なるプロジェクトがあり、それぞれに独自のリポジトリがあり、それらのリポジトリの一部が非常に大きいということです。特に、1つのリポジトリには多数のブランチがあり、おそらくブランチごとに約9,000個のファイルがあります。Crucibleでそのリポジトリを参照すると、非常に遅くなります。

CrucibleはCentOS VMで実行されています。VMには4 GBのRAMがあり、私はCrucibleの最大値を3 GBに設定しました。そのうち、現在2 GBを使用しています。私はこれをアトラシアンのサポートチケットで取り上げ、次のことを提案しました。

特に、かなり大きなSVNリポジトリがあるため、Fisheyeがディスク上に大きなインデックスファイルを作成することに気付くでしょう。パフォーマンスを向上させるために、次のことを試してください。

私はある程度これらすべてのものを試しましたが、これまでのところ、大きな助けにはなっていません。私は元々、組み込みのHSQL DBを使用して2GBのRAMを搭載したWindowsボックスでCrucibleを実行していました。CentOSでMySQLに移行すると、一部のリポジトリのパフォーマンスが向上し、Crucibleがはるかに安定しましたが、最大のリポジトリではあまり役に立たないようでした。ツールの有用性を維持しながら、索引付けから除外できるファイル/ブランチは非常に多くあります。

そうだとしたら、めちゃくちゃ強力なハードウェアに投資することなく、大規模なリポジトリでCrucibleを高速化する方法についてのヒントはありますか?

ありがとう!

編集:私は、明示的に上記のことを言及しなかった私がいるので、明確にするのです FishEyeのを使用。

編集2:最初にこれを投稿して以来、パフォーマンスは新しいCrucibleリリースで多少改善されましたが、それでも決して素晴らしいとは言えません。この問題、私たちが使用しているよりもはるかに強力なハードウェアを備えているユーザーを含め、多くのユーザー影響を及ぼしているようです。したがって、それはハードウェアの問題ではなく、Crucibleに固有の非効率性の問題であると私は考えています。アトラシアンはこの問題を認識しており、今後のリリースでさらにパフォーマンスが改善される予定です。そのため、これらの変更により問題が解決されることを願っています。

編集3:いつまでこの質問をしたかを忘れていたので、以前の編集では、最初に質問されたときからハードウェアの状況も変化したことについては触れませんでした。現在、専用の物理サーバーでCrucibleを実行していますが、CentOSを使用しています。ハードウェアはまだ控えめです(4GB RAM、クアッドコアCPU、および外部バックアップを備えたRAID 1のデュアル500GBディスク)が、VMから移動したときにパフォーマンスがわずかに向上しました。


私はこれが古い質問であることを知っていますが、検索でこれを見つけた人への参考までに、私の(非常に限られた)最近の経験では、データベースを外部のPostgreSQLインスタンスに移動するだけで、大規模なリポジトリの大幅なスピードアップが得られます(明らかに、これはマシンがまともなサイズのpostgresインスタンスを実行するのに十分なほど強力です。また、ハードウェア用に少しだけ真空設定を微調整しましたが、箱から出しただけで高速でした)。これにより、ディスクアクセス時間が大幅に削減され、パフォーマンスとユーザビリティはmysqlよりもはるかに優れています(または、少なくともfecruのように見えます)
Sam Whited

回答:


2

MySQLに移行すると、一部のリポジトリで顕著な違いが生じたため、データベースを調整してさらに改善することを検討してください。一部のmy.cnf値をデフォルトから変更すると、大きな違いが生じる可能性があります。詳細については、InnoDBパフォーマンス最適化の基本を参照してください。また、スロークエリログを有効にしてスロークエリをチェックし、必要に応じてインデックスを追加します。

私の次の推測はネットワーク速度でしょう:あなたのCrucibleインスタンスはSVNリポジトリと同じ有線ローカルネットワーク上にありますか?可能であれば、プライマリリポジトリと同じマシンでCrucibleを試してみて、ネットワークレイテンシを原因として排除することもできます。

作業環境によっては難しいかもしれませんが、VMでCrucibleを実行してもおそらく役に立たないでしょう。Atlassianは、Crucible構成の非常に短いベストプラクティスページでこれを指摘しています。あなたはすでにそれに出くわしたと確信していますが、他の読者のためにTuning FishEyeページについても触れます。

また、大規模なプロジェクトではパフォーマンスの問題がありますが、遅いのはCrucibleの重いWebインターフェースが原因です。これは、しばらくクリックした後に特に当てはまります(以前にレビューで表示したページは、見えなくてもブラウザーウィンドウに残ります)。開発者は、Google Chromeに切り替えることで速度がわずかに向上することに気づきました。また、開発環境に互換性のあるプラグインが存在する場合は、Atlassian IDE Con​​nectorも確認してください。Eclipse IDEコネクターは、前回(数か月前)使用したときにそれ自体に問題がありましたが、少なくともハングアップすることなく大きなファイルセットを処理できました。

会社の開発方法によっては、多数のコードブランチのスキャンを停止し(それらの多くがアクティブでなくなったと想定)、必要になるまで、完了またはデッドプロジェクトのリポジトリを無効にすることができます。私の会社では、多数のプロジェクトで非常に小さなチームを利用しているため、ほとんどの場合、主にに取り組んでいるためtrunk、ブランチは例外です。したがって、デフォルトですべてのブランチを含めるのではなく、スキャンするブランチを明示的に追加します。また、誤ってタグをスキャンしていないことを確認してください。

CrucibleボックスでのCPU使用率はどうですか?Apache HTTPDの背後でSVNを使用している場合は、大きなリポジトリスキャン中にCrucibleによって消費される接続の数を調べます。それとは別に、他に何を見ればよいのかはわかりませんが(おそらくディスク速度?リポジトリスキャンの頻度?)、上記のヒントが少し役立つことを願っています。


詳しい回答ありがとうございます。以前の編集に更新されたハードウェア情報を含めるのを忘れたので、元の質問を更新しました。ネットワーク速度はおそらく最初のインデックス作成の問題ですが、インデックスが作成されれば問題は発生しないはずです(インデックス化されたファイルを参照するとき、これは多くの苦痛を感じるところです)。適度なパフォーマンスの向上。私たちの開発者のほとんどはChromeを使用しており、JavaScriptエンジンとしてIEを使用しないようにCrucibleを使用するすべての人に(とにかくIE9の前に)非常に遅いと警告しました。
ミッチリンドグレン

以前に表示したファイルがメモリに保持されていることに気づかなかったので、物事が遅くなったときに更新するように全員に指示します。ただし、参考までに、アトラシアンはEclipseコネクタのサポートを完全に終了しました。他のIDE用のコネクタはありますが、Eclipseは私たちにとって大きなものです。ブランチについては、一部のチームはそれらを使用せず、一部は広範囲に使用しています。ブランチを使用しないチームは結構です。深刻な遅延に直面しているチーム。残念ながら、プロセスを変更するように依頼することは、問題外です。
ミッチリンドグレーン2007

私は以前にMySQLのパフォーマンスを調べたことがありますが、もう一度行います。しかし、大きなボトルネックはインデックスファイルをたどっているだけのようです。より高速なディスクが役立つ場合がありますが、ディスクはすでにかなり高速です(ただし、最上位ではありません。新しいサーバーに移動する前に、多くのIO待機が発生しましたが、それ以上は表示されません)。私が今できることは、アトラシアンの宣伝されているパフォーマンスの向上を待つことだけです。ただし、同じ状況にいる可能性のある他の人にとって貴重な情報がたくさん含まれていると思うので、回答を承認済みとしてマークします。
ミッチリンドグレン

1

> 4 GのRAMは「めちゃくちゃ強力」なハードウェアではありません。25人のユーザーがいて、Fisheye(おっしゃるとおり)を使用しているとすると、ソフトウェアだけで$ 4400を費やしています。デルでの4万ドルで、48GのRAMを搭載したサーバーを購入できます。

また、64ビットJVMを使用していますか?これらのドキュメントは、32ビットのJVMの方が、メモリフットプリントが改善されていることを示しています(例:少ない)。


情報をありがとう。64ビットJVMを使用しています。32ビットに切り替えられるかどうかを確認し、それが役立つかどうかを確認します。編集:エラー:Enterキーを押すと、新しい行を追加する代わりにコメントが保存されます。私の悪い。ハードウェアに関しては、それは難点22のようなものです。ハードウェアの状況はやや制御不能であり、ツールがそれを使用する必要があるすべてのチームで機能することがわかるまで、増加した支出を正当化するのは困難です。私は何が既存のセットアップに行うことができる場合(例えば、そのVMに多くのメモリを割り当てる。)表示されます
ミッチ・リンドグレン

ダブルコメントについてお詫びしますが、もう1つ質問があります。記憶に問題があると確信していますか 4GBはそれほど多くないことに気づきましたが、Fisheye / Crucibleは、JVMに設定した3GBの最大値を超えていません。
ミッチリンドグレン

それがあなたの問題かどうかはわかりませんが、それが「めちゃくちゃ強力」ではないことを指摘していました。パフォーマンスが低下している間に、いくつかのシステム統計を収集できますか?を実行しtopiostat何を実行して、何が問題になっているのかを確認します。
ビルワイス

「めちゃくちゃパワフル」は言葉の選択が不十分でした。48GBのRAMを備えた4,000ドルのサーバーは、ごく少数の開発者が使用するWebアプリにとって過度の要件であると私は感じています。
ミッチリンドグレーン2010年

3
$ 4400/25ユーザー/ 2年== $ 88 / dev /年。年間何時間の開発時間を節約できますか?
ビル・ワイス

0

私は実際にこれを試したことはありませんが、あなたとまったく同じ症状が発生しています。

現在、問題のリポジトリの保存された差分情報をオフにすることを検討しています。私はアトラシアンのQ&Aサイトで質問し、有望なアドバイスを受けました。

私の問題は同じです-インデックス作成は問題ではなく、VMのパフォーマンスの低いディスクアレイで実行されている巨大なディスクフットプリントです。現在ディスクをアップグレードできないので、別の方法を見つける必要があります。上記の私の投稿の回答者は、差分情報を削除すると、追加/削除された行を検索する機能失われる代わりに、ディスクのフットプリント減少すると述べています。彼はまた、それが長い履歴を持つファイルを閲覧する速度に影響を及ぼさないだろうと示唆しています。

他の誰かがこれを見て、このスイッチで成功/失敗を報告できる場合は、ここにコメントしてください。

ああ、私は同じパフォーマンスの問題で2.7.13を実行しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.