Atlassian Crucible très lent sur un grand référentiel

8

Mon entreprise exécute un essai d'Atlassian Crucible depuis quelques mois maintenant. Pour les référentiels où il fonctionne correctement, les utilisateurs ont donné des commentaires très positifs sur l'outil. Le problème que j'ai, c'est que nous avons plusieurs projets différents, chacun avec son propre référentiel, et certains de ces référentiels sont très grands. Un référentiel en particulier a un grand nombre de branches et probablement environ 9 000 fichiers par branche. Parcourir ce référentiel dans Crucible est extrêmement lent.

Crucible s'exécute sur une machine virtuelle CentOS. La machine virtuelle a 4 Go de RAM, et j'ai fixé le maximum de Crucible à 3 Go, dont elle utilise actuellement 2 Go. J'ai soulevé cette question dans un ticket de support avec Atlassian, et ils ont suggéré ce qui suit:

En particulier parce que vous avez un référentiel SVN assez volumineux, vous constaterez probablement que Fisheye créera un grand fichier d'index sur le disque. Pour aider à améliorer les performances, vous pouvez essayer plusieurs choses:

J'ai essayé toutes ces choses dans une certaine mesure, mais jusqu'à présent, aucune n'a beaucoup aidé. J'utilisais à l'origine Crucible sur une boîte Windows avec 2 Go de RAM en utilisant la base de données HSQL intégrée. Le passage à MySQL sur CentOS a vu une augmentation des performances de certains référentiels et a rendu Crucible beaucoup plus stable, mais ne semble pas beaucoup aider avec notre plus grand référentiel. Il n'y a que tant de fichiers / branches que je peux exclure de l'indexation tout en conservant l'utilité de l'outil.

Cela étant, quelqu'un a-t-il des conseils sur la façon d'accélérer Crucible sur les grands référentiels, sans investir dans du matériel incroyablement puissant?

Merci!

Edit: Pour clarifier les choses, puisque je ne l' ai pas mentionné explicitement ci - dessus, je suis utilise fisheye.

Edit 2: Depuis que j'ai publié ceci, les performances se sont quelque peu améliorées avec les nouvelles versions de Crucible, mais ce n'est toujours pas génial du tout. Il semble que ce problème affecte de nombreux utilisateurs , y compris certains avec un matériel beaucoup plus puissant que celui que nous utilisons. Ainsi, je ne pense pas que ce soit un problème matériel, mais plutôt un problème d'inefficacité inhérente à Crucible. Atlassian est conscient du problème et inclura de nouvelles améliorations de performances dans les futures versions, donc j'espère que ces changements résoudront nos problèmes.

Édition 3: j'avais oublié depuis combien de temps j'avais posé cette question, donc dans mon édition précédente, j'ai négligé de mentionner que notre situation matérielle a également changé depuis qu'elle a été posée à l'origine. Nous exécutons maintenant Crucible sur un serveur physique dédié, toujours en utilisant CentOS. Le matériel est encore modeste (4 Go de RAM, processeur quad core et deux disques de 500 Go en RAID 1 avec sauvegarde externe), mais nous avons constaté une légère augmentation des performances lorsque nous nous sommes éloignés de la machine virtuelle.

Mitch Lindgren
la source
Je sais que c'est une vieille question, mais pour toute personne qui trouve cela via la recherche, dans mon expérience récente (très limitée), le simple fait de déplacer la base de données vers une instance PostgreSQL externe vous donnera une accélération majeure pour les grands dépôts (évidemment, cela suppose que la machine est suffisamment puissant pour exécuter une instance postgres de taille décente; J'ai également modifié un peu les paramètres de vaccin pour mon matériel, mais juste hors de la boîte, c'était plus rapide). Cela réduira considérablement les temps d'accès au disque, et les performances et la convivialité sont bien meilleures que mysql (ou du moins, il semble que ce soit pour fecru)
Sam Whited

Réponses:

2

Étant donné que la migration vers MySQL a fait une différence notable pour certains référentiels, envisagez de régler la base de données pour de nouvelles améliorations. La modification de certaines my.cnfvaleurs par défaut peut faire une énorme différence. Voir Bases de l'optimisation des performances InnoDB pour plus d'informations. Vérifiez également les requêtes lentes en activant le journal des requêtes lentes et ajoutez des index le cas échéant.

Ma prochaine supposition serait la vitesse du réseau: votre instance Crucible est-elle sur le même réseau local câblé que vos référentiels SVN? Vous pouvez également essayer de tester Crucible sur la même machine que votre référentiel principal si possible pour éliminer la latence du réseau en tant que coupable.

Et je sais que cela peut être difficile en fonction de votre environnement de travail, mais l'exécution de Crucible dans une machine virtuelle n'aide probablement pas les choses; Atlassian en prend note sur leur très brève page Meilleures pratiques pour la configuration du creuset . Je suis sûr que vous l'avez déjà rencontré, mais je mentionnerai également la page Tuning FishEye pour les autres lecteurs.

J'ai également des problèmes de performances pour les grands projets, mais j'attribue beaucoup de lenteur à l'interface Web lourde de Crucible. Cela est particulièrement vrai après avoir cliqué un peu (les pages précédemment consultées dans une critique restent dans la fenêtre du navigateur, même lorsqu'elles sont cachées). Nos développeurs ont remarqué une légère augmentation de la vitesse en passant à Google Chrome. Consultez également le connecteur IDE Atlassian si un plug-in compatible existe pour votre environnement de développement. Le connecteur IDE Eclipse a eu ses propres problèmes la dernière fois que je l'ai utilisé (il y a plusieurs mois), mais il pouvait au moins gérer de grands ensembles de fichiers sans raccrocher.

Selon les pratiques de développement de votre entreprise, vous pouvez arrêter d'analyser un grand nombre de branches de code (en supposant que plusieurs d'entre elles ne sont plus actives) et désactiver les référentiels pour les projets terminés / morts jusqu'à ce qu'ils soient nécessaires. Mon entreprise utilise de très petites équipes sur un grand nombre de projets, donc la plupart du temps nous travaillons principalement sur trunk, faisant des succursales l'exception; nous ajoutons donc explicitement des branches à scanner au lieu d'inclure toutes les branches par défaut. Assurez-vous également que vous ne numérisez pas accidentellement les balises.

Comment est votre utilisation du processeur sur la boîte Crucible? Si vous utilisez SVN derrière Apache HTTPD, examinez combien de connexions sont consommées par Crucible pendant une analyse de grand référentiel. En dehors de cela, je ne sais pas quoi d'autre vous pourriez regarder (peut-être la vitesse du disque? Fréquence de scan du référentiel?), Mais j'espère que les conseils ci-dessus vous aideront un peu.

Dave
la source
Merci pour la réponse détaillée. J'ai mis à jour ma question d'origine car j'ai oublié d'inclure les informations matérielles mises à jour dans ma précédente édition. La vitesse du réseau est probablement un problème dans l'indexation initiale, mais ne devrait pas causer de problèmes une fois que les index ont été créés (c'est là que nous voyons beaucoup de douleur - lors de la navigation dans les fichiers indexés.) Nous avons fini par déplacer Crucible vers une boîte physique dédiée et une scie une augmentation modeste des performances. La plupart de nos développeurs utilisent Chrome, et j'ai averti tous ceux qui utilisent Crucible de ne pas utiliser IE car son moteur JavaScript (avant IE9 de toute façon) est très lent.
Mitch Lindgren
Je ne savais pas que les fichiers précédemment consultés étaient conservés en mémoire, donc je serai sûr de dire à tout le monde de se rafraîchir lorsque les choses ralentissent. Pour info, Atlassian a complètement abandonné la prise en charge du connecteur Eclipse, ce qui m'a fait beaucoup de plaintes. Ils ont des connecteurs pour d'autres IDE mais Eclipse est un gros pour nous. En ce qui concerne les succursales, certaines de nos équipes ne les utilisent pas et d'autres le font largement. Les équipes qui n'utilisent pas de succursales vont bien. Les équipes qui rencontrent de sérieuses lenteurs. Malheureusement, leur demander de changer leur processus est en quelque sorte hors de question.
Mitch Lindgren
J'ai déjà examiné les performances de MySQL et je le ferai à nouveau. Il semble cependant que le gros goulot d'étranglement traverse simplement les fichiers d'index. Un disque plus rapide pourrait aider ici, mais nos disques sont déjà assez rapides (quoique pas haut de gamme. Avant de passer au nouveau serveur, j'ai vu beaucoup d'E / S attendre, mais je n'en vois plus trop.) Je pense Tout ce que je peux faire maintenant, c'est attendre les améliorations de performances espionnées d'Atlassian. Je vais marquer votre réponse comme acceptée, cependant, car je pense qu'elle contient beaucoup d'informations précieuses pour d'autres qui pourraient être dans la même situation.
Mitch Lindgren
1

> 4 G de RAM n'est pas un matériel "incroyablement puissant". En supposant que vous avez 25 utilisateurs et que vous utilisez Fisheye (que vous mentionnez), vous dépensez 4400 $ uniquement pour le logiciel. 4 000 $ chez Dell pourraient vous acheter un serveur avec 48 Go de RAM.

De plus, utilisez-vous une JVM 64 bits? Les documents suggèrent que vous verrez une meilleure empreinte mémoire (comme dans, moins) sur une JVM 32 bits.

Bill Weiss
la source
Merci pour l'info. Nous utilisons une JVM 64 bits. Je vais voir si je peux passer en 32 bits et voir si ça aide. Edit: Oups - appuyez sur Entrée et il a enregistré mon commentaire au lieu d'ajouter de nouvelles lignes. Ma faute. En ce qui concerne le matériel, c'est un piège: la situation matérielle est quelque peu hors de mon contrôle, et il est difficile pour moi de justifier une augmentation des dépenses jusqu'à ce que nous sachions que l'outil fonctionnera pour toutes les équipes qui ont besoin de l'utiliser. Je vais voir si quelque chose peut être fait pour la configuration existante (allouer plus de mémoire à cette VM, par exemple.)
Mitch Lindgren
Toutes mes excuses pour les doubles commentaires, mais une autre question: êtes-vous convaincu que la mémoire est le problème? Je me rends compte que 4 Go n'est pas beaucoup, mais Fisheye / Crucible ne maximise même pas le maximum de 3 Go que j'ai défini sur la JVM.
Mitch Lindgren
Je ne sais pas si c'est votre problème, mais je soulignais simplement que ce n'est pas "incroyablement puissant". Bien qu'il fonctionne mal, pourriez-vous collecter des statistiques système? Courez top, iostatet ainsi de suite, et voyez ce qui fait mal.
Bill Weiss
«Insensément puissant» était un mauvais choix de mots. Je pense simplement qu'un serveur de 4 000 $ avec 48 Go de RAM est une exigence démesurée pour une application Web utilisée par si peu de développeurs.
Mitch Lindgren
3
4400 $ / 25 utilisateurs / 2 ans == 88 $ / dev / an. Combien d'heures de développement par an faut-il pour vous faire économiser?
Bill Weiss
0

Bien que je n'aie pas essayé cela moi-même, je ressens exactement les mêmes symptômes que vous.

J'envisage actuellement de désactiver les informations de diff stockées pour les référentiels incriminés. J'ai posé la question sur le site de questions-réponses d' Atlassian et j'ai obtenu des conseils prometteurs.

Mon problème est le même - l'indexation n'est pas le problème, c'est une énorme empreinte de disque s'exécutant sur une matrice de disques peu performante dans une machine virtuelle. Comme je ne peux pas actuellement mettre à niveau le disque, je dois trouver un autre moyen de le contourner. Le répondeur dans mon article ci-dessus dit que la suppression des informations de différence réduira l'empreinte du disque au détriment de la possibilité de rechercher des lignes ajoutées / supprimées . Bien qu'il suggère également que cela n'affectera pas la vitesse de navigation dans les fichiers à longue histoire.

Si quelqu'un d'autre voit cela et peut signaler un succès / échec avec ce commutateur, veuillez commenter ici.

Oh, et je lance 2.7.13 avec les mêmes problèmes de performances.

Mark McDonald
la source