web-dev-qa-db-ja.com

Hyper-Vサーバー内でgit clone / fetchが非常に遅い理由を評価する方法は?

Ubuntu Server 12.0.4にgitをインストールし、gitlabと連携して作業しています。 Ubuntu自体は、Hyper-V Server 2012 R2の仮想マシンです。

コマンドのパフォーマンスを比較していますgit clone git@my-server:group/repo.gitなので、これは「ローカルgit」プロトコルではなく、常にSSHです。

同じVMからsshを介してクローンを作成する場合-それは速度〜15-20 MiB/sを示します。他のVMまたは他のマシンから同じLAN内-70-200 KiB/s、これは痛々しいほど遅いWindowsボックスとLinuxボックスの両方を試しました。

私はグーグルしようとしました this oneを見つけましたが、それは問題ではないようです:a)PuTTYのPLinkを使用しようとしました; b)WindowsでOpenSSHを2014年1月バージョンに更新するか、c)Linuxボックスを使用する-運が悪い。

私はiperfを使用しようとしましたが、それはネットワークの問題ではありません。同じハイパーバイザー内のVM間の接続は、VMとLAN内の他のマシンの間で〜300-400 Mb/sです。 -〜10 Mb/s(100 Mbitイーサネット接続)。

だから、私の質問は-ボトルネックがどこにあるかをどのように見つけることができるのですか?私は今アイデアがありません。

追伸それはおそらくSSHの問題ではありません-httpを介した複製はほぼ同じ速度を示します。

8
Ivan Danilov

Gitlab VMから15 MBでクローンを作成できるという事実は、ハイパーバイザーのネットワーク抽象化レイヤーに問題がある可能性が高いです。


  • 2つのLinux VM間で 生データ を送信して、すべてのネットワーク接続が遅いかどうかをテストします。

    セカンダリLinux VMで次を実行:

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

    Gitlab VMで次を実行:

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

    これにより、ネットワーク速度が表示されます。おそらくこれは 遅い

  • VMQをオフにする ハイパーバイザー

  • 試してみてください ジャンボフレームをオフにする (MTU> 1500)

  • 最後に、gitlab vm内のwiresharkからtcpダンプを実行してみてください。飛び出すエラーがないか確認する

6
spuder

DNS設定/サーバーを確認してください。私はこの問題を抱えていて、それが私のプライマリDNSがgitサーバーを解決していないことが原因であることがわかりました。プライマリを切り替えると、スピードが上がりました。 gitはDNSクエリのキャッシュを許可していないため、毎回フェイルオーバーする必要があったようです。

3
Craneum

うーん、これは最も厄介な問題です。仮想NICポートに 帯域幅制限 が設定されていますか?もしそうなら...それはそれかもしれない...

OPでそれを言及しなかったのでこれを投稿するだけで、それが回答になる可能性がありますが、これがそうなるかどうかはわかりません.

0
allquixotic