Crisol Atlassian muito lento em repositório grande

8

Minha empresa está executando um teste do Crisol Atlassian há alguns meses. Para repositórios em que está funcionando corretamente, os usuários deram um feedback muito positivo sobre a ferramenta. O problema que estou tendo é que temos vários projetos diferentes, cada um com seu próprio repositório, e alguns desses repositórios são muito grandes. Um repositório em particular possui um grande número de ramificações e provavelmente cerca de 9.000 arquivos por ramificação. A navegação nesse repositório no Crucible é extremamente lenta.

O Crisol está sendo executado em uma VM CentOS. A VM tem 4 GB de RAM, e eu configurei o máximo do Crisol em 3 GB, dos quais atualmente está usando 2 GB. Trouxe isso em um tíquete de suporte com a Atlassian e eles sugeriram o seguinte:

Em particular porque você tem um repositório SVN bastante grande, provavelmente encontrará que o Fisheye criará um grande arquivo de índice em disco. Para ajudar a melhorar o desempenho, algumas coisas que você pode tentar são:

Eu tentei todas essas coisas até certo ponto, mas até agora nenhuma ajudou muito. Originalmente, eu estava executando o Crucible em uma caixa do Windows com 2 GB de RAM usando o banco de dados HSQL integrado. A mudança para o MySQL no CentOS teve um aumento de desempenho em alguns repositórios e tornou o Crucible muito mais estável, mas não pareceu ajudar muito com o nosso maior repositório. Existem apenas tantos arquivos / ramificações que posso excluir da indexação, mantendo a utilidade da ferramenta.

Sendo esse o caso, alguém tem alguma dica sobre como acelerar o Crisol em grandes repositórios, sem investir em hardware incrivelmente poderoso?

Obrigado!

Edit: Para esclarecer, desde que eu não mencionei explicitamente acima, eu estou usando o FishEye.

Edit 2: Desde que eu postei isso originalmente, o desempenho melhorou um pouco com os novos lançamentos do Crucible, mas ainda não é ótimo de forma alguma. Parece que esse problema afeta muitos usuários , incluindo alguns com hardware muito mais poderoso do que estamos usando. Portanto, não acredito que seja um problema de hardware, mas um problema com ineficiência inerente no Crisol. A Atlassian está ciente do problema e incluirá outras melhorias de desempenho em versões futuras, por isso espero que essas mudanças resolvam nossos problemas.

Edição 3: eu tinha esquecido há quanto tempo eu fiz essa pergunta, então na minha edição anterior eu esqueci de mencionar que a nossa situação de hardware também mudou desde que foi originalmente solicitada. Agora estamos executando o Crucible em um servidor físico dedicado, ainda usando o CentOS. O hardware ainda é modesto (4 GB de RAM, CPU quad core e discos duplos de 500 GB no RAID 1 com backup externo), mas vimos um ligeiro aumento de desempenho quando nos afastamos da VM.

Mitch Lindgren
fonte
Eu sei que essa é uma pergunta antiga, mas para quem está encontrando isso por meio de pesquisa, na minha experiência recente (muito limitada) apenas mover o banco de dados para uma instância externa do PostgreSQL fornecerá uma grande aceleração para repositórios grandes (obviamente, isso pressupõe que a máquina seja suficientemente poderoso para executar uma instância de tamanho decente do postgres; eu também aprimorei um pouco as configurações do vácuo para o meu hardware, mas, fora da caixa, foi mais rápido). Isto irá reduzir drasticamente os tempos de acesso ao disco, eo desempenho e usabilidade é muito melhor do mysql (ou, pelo menos, parece ser para fecru)
Sam Whited

Respostas:

2

Como a migração para o MySQL fez uma diferença notável em alguns repositórios, considere ajustar o banco de dados para obter mais melhorias. Alterar alguns my.cnfvalores dos padrões pode fazer uma enorme diferença. Consulte Noções básicas de otimização de desempenho do InnoDB para obter mais informações. Verifique também consultas lentas, ativando o log de consultas lentas e adicione índices, quando apropriado.

Meu próximo palpite seria a velocidade da rede: sua instância do Crucible está na mesma rede local com fio dos seus repositórios SVN? Você também pode tentar executar o Crucible na mesma máquina que seu repositório primário, se possível, para eliminar a latência da rede como a culpada.

E sei que pode ser difícil, dependendo do seu ambiente de trabalho, mas executar o Crisol em uma VM provavelmente não está ajudando; Atlassian faz uma anotação disso em sua breve página de Boas Práticas para Configuração do Crisol . Tenho certeza que você já se deparou com isso, mas também mencionarei a página Tuning FishEye para outros leitores.

Também tenho problemas de desempenho para grandes projetos, mas atribuo muita lentidão à pesada interface da web do Crucible. Isso é especialmente verdadeiro depois de clicar um pouco (as páginas exibidas anteriormente em uma revisão permanecem na janela do navegador, mesmo quando ocultas). Nossos desenvolvedores notaram um ligeiro aumento de velocidade ao mudar para o Google Chrome. Verifique também o Atlassian IDE Connector se houver um plug-in compatível para o seu ambiente de desenvolvimento. O Eclipse IDE Connector teve problemas próprios na última vez em que o usei (há muitos meses), mas podia pelo menos lidar com grandes conjuntos de arquivos sem desligar.

Dependendo das práticas de desenvolvimento da sua empresa, você pode interromper a varredura de um grande número de ramificações de código (supondo que muitas delas não estejam mais ativas) e desativar os repositórios para projetos concluídos / inativos até que sejam necessários. Minha empresa utiliza equipes muito pequenas em um grande número de projetos; portanto, na maioria das vezes trabalhamos principalmente trunk, tornando as filiais a exceção; portanto, adicionamos explicitamente ramificações para varredura em vez de incluir todas as ramificações por padrão. Verifique também se você não está digitalizando acidentalmente tags.

Como está o uso da CPU na caixa do Crisol? Se você estiver usando o SVN por trás do Apache HTTPD, examine quantas conexões são consumidas pelo Crucible durante uma grande varredura de repositório. Além disso, não sei ao certo o que mais você poderia ver (talvez a velocidade do disco? Frequência de verificação do repositório?), Mas espero que as dicas acima ajudem um pouco.

Dave
fonte
Obrigado pela resposta detalhada. Atualizei minha pergunta original porque esqueci de incluir informações atualizadas de hardware na minha edição anterior. A velocidade da rede é provavelmente um problema na indexação inicial, mas não deve causar problemas após a criação dos índices (que é onde sentimos muita dor - ao navegar nos arquivos indexados). Acabamos movendo o Crucible para uma caixa física dedicada e vimos um modesto aumento de desempenho. A maioria dos nossos desenvolvedores usa o Chrome, e eu avisei a todos que usam o Crisol para não usar o IE, pois seu mecanismo JavaScript (antes do IE9) é muito lento.
27511 Mitchellgrgren
Eu não sabia que os arquivos visualizados anteriormente eram mantidos na memória; portanto, pedirei a todos que atualizem quando as coisas ficarem lentas. Para sua informação, porém, o Atlassian abandonou completamente o suporte ao conector Eclipse, sobre o qual recebi muitas reclamações. Eles possuem conectores para outros IDEs, mas o Eclipse é importante para nós. Quanto às filiais, algumas de nossas equipes não as utilizam e outras o utilizam extensivamente. As equipes que não usam filiais estão bem. As equipes que enfrentam séria lentidão. Infelizmente, pedir que eles mudem seu processo está meio fora de questão.
27511 Mitchellgrgren
Eu examinei o desempenho do MySQL anteriormente e o farei novamente. Parece que o grande gargalo está apenas atravessando os arquivos de índice. Um disco mais rápido pode ajudar aqui, mas nossos discos já são bem rápidos (embora não estejam no topo da linha. Antes de passar para o novo servidor, vi muitas E / S aguardando, mas não vejo mais muito.) tudo o que posso fazer agora é esperar as melhorias de desempenho elogiadas do Atlassian. No entanto, vou marcar sua resposta como aceita, pois acho que ela contém muitas informações valiosas para outras pessoas que possam estar na mesma situação.
27711 Mitch Mitchgren
1

> 4 G de RAM não são hardware "incrivelmente poderoso". Supondo que você tenha 25 usuários e use o Fisheye (que você mencionou), estará gastando US $ 4400 apenas no software. US $ 4 mil na Dell poderiam comprar um servidor com 48G de RAM.

Além disso, você está usando uma JVM de 64 bits? Os documentos sugerem que você terá uma melhor pegada de memória (por exemplo, menos) em uma JVM de 32 bits.

Bill Weiss
fonte
Obrigado pela informação. Estamos usando uma JVM de 64 bits. Vou ver se consigo mudar para 32 bits e ver se isso ajuda. Edit: Oops - pressione enter e ele salvou meu comentário em vez de adicionar novas linhas. Foi mal. Em relação ao hardware, é um problema: a situação do hardware está um pouco fora do meu controle e é difícil justificar o aumento de gastos até que saibamos que a ferramenta funcionará para todas as equipes que precisam usá-la. Vou ver se algo pode ser feito para a configuração existente (alocar mais memória para que VM, por exemplo.)
Mitch Lindgren
Desculpas pelo comentário duplo, mas uma outra pergunta: você tem certeza de que a memória é o problema? Sei que 4 GB não é muito, mas o Fisheye / Crucible nem está atingindo o máximo de 3 GB que eu defini na JVM.
Mitch Lindgren
Não tenho certeza se esse é o seu problema, mas eu apenas estava apontando que isso não é "insanamente poderoso". Enquanto o desempenho é ruim, você pode coletar algumas estatísticas do sistema? Corra top, iostate outros enfeites, e veja o que está doendo.
Bill Weiss
"Insanamente poderoso" foi uma má escolha de palavras. Eu apenas sinto que um servidor de US $ 4.000 com 48 GB de RAM é um requisito desordenado para um aplicativo Web que é usado por tão poucos desenvolvedores.
Mitch Lindgren
3
US $ 4400/25 usuários / 2 anos == US $ 88 / dev / ano. Quantas horas de desenvolvimento por ano ele precisa para economizar você?
Bill Weiss
0

Embora eu ainda não tenha tentado isso, estou tendo exatamente os mesmos sintomas que você.

Atualmente, estou pensando em desativar as informações de diff armazenadas para os repositórios incorretos. Fiz a pergunta no site de perguntas e respostas da Atlassian e recebi alguns conselhos promissores.

Meu problema é o mesmo - a indexação não é o problema, é uma enorme pegada de disco em execução em uma matriz de disco com desempenho insatisfatório em uma VM. Como não posso atualizar o disco no momento, preciso encontrar outra maneira de contorná-lo. O respondente no meu post acima diz que a remoção de informações diferenciais reduzirá a pegada de disco à custa de perder a capacidade de pesquisar linhas adicionadas / removidas . Embora ele também sugira que isso não afetará a velocidade de navegação em arquivos com históricos longos.

Se alguém vê isso e pode relatar sucesso / falha com essa opção, comente aqui.

Ah, e estou executando o 2.7.13 com os mesmos problemas de desempenho.

Mark McDonald
fonte