Come valutare perché git clone / fetch è così lento all'interno del server Hyper-V?


7

Ho git installato su Ubuntu Server 12.0.4 e lavoro in tandem con gitlab. Ubuntu stesso è una macchina virtuale in Hyper-V Server 2012 R2.

Sto confrontando le prestazioni del comando git clone git@my-server:group/repo.git, quindi non è un protocollo 'git locale', ma sempre SSH.

Se clonato tramite ssh dalla stessa VM, mostra velocità ~ 15-20 MiB / s. Da altre VM sullo stesso server fisico o da un'altra macchina nella stessa LAN - 70-200 KiB / s, che è dolorosamente lento. Ho provato sia Windows Box che Linux.

Ho provato a google e ho trovato Questo uno, ma non sembra un problema: ho provato a) per usare Putty's PLink; b) aggiornare OpenSSH alla versione di gennaio 2014 su Windows o anche c) usare Linux Box - senza fortuna.

Ho provato a usare iperf e non è sicuramente un problema della rete: la connessione tra VM nello stesso hypervisor è ~ 300-400 Mb / s, tra VM e altra macchina in LAN - ~ 10 Mb / s (100 Mbit connessione ethernet).

Quindi, la mia domanda è: come posso trovare dove è il collo di bottiglia? Sono fuori dalle idee in questo momento.

Post scriptum Probabilmente non è un problema SSH - la clonazione via http mostra quasi la stessa velocità.

Risposte:


6

Il fatto che è possibile clonare a 15 MB dalla gitlab VM rende molto probabilmente un problema con il livello di astrazione della rete dell'hypervisor.


  • Verifica se tutte le connessioni di rete sono lente inviando dati grezzi tra 2 macchine virtuali Linux.

    Sulla macchina Linux secondaria eseguire:

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

    Sulla VM gitlab eseguita:

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

    Questo mostrerà la tua velocità di rete. Molto probabilmente questo sarà lento

  • Disattiva VMQ sull'hypervisor

  • Provare spegnendo i jumbo frame (MTU & gt; 1500)

  • Infine, prova a fare un dump tcp da wireshark all'interno di gitlab vm. Vedi se ci sono errori che saltano fuori


3
Spegnere VMQ ha reso la mia giornata, grazie mille! Nel caso qualcuno ne abbia bisogno, il comando PS è qui: Get-NetAdapter -Physical | Get-NetAdapterAdvancedProperty | Where-Object "RegistryKeyword" -EQ "*VMQ" | Set-NetAdapterAdvancedProperty -DisplayValue "Disabled"
Ivan Danilov

comando nc richiede un '-p' per ascoltare su una determinata porta
nrathaus

Spegnere VMQ accelera la mia rete intorno a 200x.
Zitrax

3

Controlla le tue impostazioni / server DNS. Ho avuto questo problema e ho scoperto che era causato dal mio DNS primario che non risolveva il server git. Una volta acceso il mio primario, ha accelerato. Appare che git non consenta il caching delle query DNS e quindi ha dovuto eseguire il failover ogni volta.


Ho appena provato la clonazione tramite IP ( git clone git@a.b.c.d:group/repo.git ) - no meglio, sfortunatamente
Ivan Danilov

Hai provato il monitoraggio delle prestazioni sul server git? Il tuo server Git fornisce altri servizi? Quali sono le specifiche sulla git VM?
Craneum

@ Craneum, sì, c'è un sacco di spazio su disco disponibile (~ 100 Gb mentre ~ 10 Gb usati), l'utilizzo della CPU non ha mai spinato più di una dozzina di percento e l'utilizzo medio della memoria è ~ 25% dei 4 Gb disponibili.
Ivan Danilov

0

Hmm, questo è un problema molto sconcertante. Hai limiti di larghezza di banda impostato sulla porta NIC virtuale? Se lo fai ... potrebbe essere ...

Pubblicando questo solo perché non l'hai menzionato nel tuo OP ed è possibile che possa essere una risposta, ma non so se sarà proprio così.


No. Comunque, allora iperf avrebbe mostrato gli stessi numeri lenti, il che non è il caso.
Ivan Danilov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.