Como avaliar por que o git clone / fetch é tão lento dentro do Hyper-V Server?

7

Eu tenho o git instalado no Ubuntu Server 12.0.4 e trabalho em conjunto com o gitlab. O próprio Ubuntu é uma máquina virtual no Hyper-V Server 2012 R2.

Estou comparando o desempenho do comando git clone git@my-server:group/repo.git , por isso não é um protocolo 'local git', mas sempre SSH.

Se eu clonar via ssh a partir da mesma VM - mostra velocidade ~ 15-20 MiB / s. De outra VM no mesmo servidor físico ou de outra máquina na mesma LAN - 70-200 KiB / s, que é dolorosamente lenta. Eu tentei caixas de janelas e linux.

Eu tentei pesquisar no Google e descobri este um, mas não parece um problema: eu tentei a) usar o Putty's Plink; b) atualizar o OpenSSH para jan 2014 no windows ou mesmo c) usar o linux box - sem sorte.

Eu tentei usar o iperf e definitivamente não é um problema da rede: a conexão entre VMs no mesmo hipervisor é ~ 300-400 Mb / s, entre VM e outra máquina na LAN - ~ 10 Mb / s (Conexão Ethernet de 100 Mbit).

Então, minha pergunta é: como posso encontrar onde está o gargalo? Estou sem ideias agora.

P.S. Não é problema SSH, provavelmente - a clonagem via http mostra quase a mesma velocidade.

    
por Ivan Danilov 18.04.2014 / 14:18

3 respostas

6

O fato de você poder clonar a 15 MBs da VM gitlab torna isso muito provavelmente um problema com a camada de abstração de rede do hipervisor.

  • Teste se todas as conexões de rede estão lentas enviando raw dados entre 2 VMs linux.

    Na VM secundária do Linux, execute:

    nc -v -l -p 4321 > /dev/null
    

    Na execução da VM do gitlab:

    dd if=/dev/zero bs=1024K count=512 | nc -v $IP_OF_FIRST_MACHINE -p 4321
    

    Isso mostrará a velocidade da sua rede. Provavelmente, isso será lento

  • Desligue o VMQ no hipervisor

  • Experimente desativando quadros jumbo (MTU > 1500)

  • Por fim, tente fazer um tcp dump a partir do wireshark dentro do gitlab vm. Veja se há erros que saltam para fora

por 22.04.2014 / 18:16
3

Verifique suas configurações / servidores de DNS. Eu tive esse problema e descobri que foi causado pelo meu DNS primário não resolver o servidor git. Depois que eu mudei minha primária, acelerou. Parece que o git não permite o armazenamento em cache de consultas DNS e, portanto, teve que fazer failover toda vez.

    
por 22.04.2014 / 04:56
0

Hmm, esse é um problema muito intrigante. Você tem limites de largura de banda definido na sua porta NIC virtual? Se você fizer isso ... pode ser isso ...

Apenas postando isso porque você não mencionou no seu OP e é possível que ele seja uma resposta, mas eu não sei ao certo se será isso.

    
por 22.04.2014 / 04:34