Como melhorar o desempenho de um servidor de compilação Java?

1

Estamos configurando um novo servidor para integração. O servidor de integração original pode concluir o "mvn install" em 3 minutos em uma caixa do Linux. Agora, mudando para um servidor do Windows 2012 na VM, ele caiu para 9 minutos. A parte "mvn test" custa 7 minutos. Muitos desses testes seguem o mesmo padrão: 1. Iniciar uma nova JVM 2. Carregar dados de teste de arquivos / planilhas Excel em banco de dados na memória 3. Executar consultas nesse banco de dados, validar resultados

Na sua opinião, como podemos melhorar o desempenho dessa VM? O servidor já tem 16GB de memória, 256GB de espaço, 8 vCPUs.

E, em geral, como um servidor de compilação, a maioria do trabalho é assim: 1. Leia os milhares de arquivos do espaço de trabalho, 2. Compile o código-fonte acima, 3. Gere milhares de arquivos .class. 4. Jar / Zip esses milhares de arquivos. 5. Copie os arquivos zip do jars para algum outro lugar.

Isso parece mais carga de trabalho na CPU e na E / S de disco do que na RAM, certo?

Obrigado Jirong

    
por user2784896 03.03.2014 / 16:29

2 respostas

2

O desempenho do nosso servidor de compilação foi aumentado aumentando o desempenho do subsistema de disco. Agora executamos 4 SSDs rápidos em hardware RAID 10.

Para confirmar se o disco é seu gargalo de desempenho, observe o IO do subsistema de disco comparado com o seu teórico e observe a latência, porque quando a latência está constantemente alta, você tem um problema.

No Windows, você pode usar o Perfmon ou o Windows Resource Monitor. No Linux, use o iostat. O cliente VMWare vshpere possui gráficos na guia de desempenho para o subsistema de disco.

    
por 03.03.2014 / 16:36
1

A resposta à sua pergunta pode ser generalizada para praticamente qualquer situação :

  1. Comece a coletar métricas (RAM, E / S, CPU, rede, etc.)
  2. Aplicar carga ao sistema
  3. Analise métricas para identificar gargalos
  4. Mitigar os afunilamentos
  5. GOTO 1
por 03.03.2014 / 16:34