7

Я установил git на Ubuntu Server 12.0.4 и работаю в паре с gitlab. Ubuntu сама по себе является виртуальной машиной в Hyper-V Server 2012 R2.

Я сравниваю производительность команды git clone git@my-server:group/repo.git , так что это не протокол "local git", а всегда SSH.

Если я клонирую через ssh с той же ВМ - он показывает скорость ~ 15-20 МБ / с. С другой виртуальной машины на том же физическом сервере или с другой машины в той же локальной сети - 70-200 КиБ / с, что мучительно медленно. Я пробовал как Windows Box, так и Linux.

Я попытался Google и нашел этот , но это не проблема: я пытался а) использовать PLink Путти; б) обновить версию OpenSSH до января 2014 года на Windows или даже в) использовать linux box - не повезло.

Я пытался использовать iperf, и это определенно не является проблемой сети: соединение между виртуальными машинами в одном и том же гипервизоре составляет ~ 300-400 Мбит / с, между виртуальной машиной и другим компьютером в локальной сети - ~ 10 Мбит / с (100 Мбит / с). сетевое соединение).

Итак, мой вопрос - как я могу найти, где находится узкое место? У меня сейчас нет идей.

PS Вероятно, это не проблема SSH - клонирование через http показывает почти одинаковую скорость.

3 ответа3

6

Тот факт, что вы можете клонировать на 15 МБ от виртуальной машины gitlab, делает это, скорее всего, проблемой с уровнем сетевой абстракции гипервизора.


  • Проверьте, все ли сетевые подключения медленные, отправив необработанные данные между двумя виртуальными машинами Linux.

    На вторичной виртуальной машине Linux запустите:

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

    На виртуальной машине gitlab выполните:

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

    Это покажет скорость вашей сети. Скорее всего это будет медленно

  • Отключить VMQ на гипервизоре

  • Попробуйте отключить большие кадры (MTU> 1500)

  • Наконец, попробуйте выполнить дамп tcp из wireshark внутри gitlab vm. Посмотрите, есть ли ошибки, которые выскакивают

3

Проверьте настройки DNS / серверы. У меня была эта проблема, и я обнаружил, что она была вызвана тем, что мой основной dns не разрешил git-сервер. Как только я переключил свой основной, он ускорился. Похоже, что git не позволяет кэшировать DNS-запросы и, следовательно, каждый раз приходилось переходить на другой ресурс.

0

Хм, это самая сложная проблема. У вас установлены ограничения полосы пропускания на вашем виртуальном сетевом порту? Если вы это сделаете ... это может быть ...

Просто опубликовав это, потому что вы не упомянули об этом в своем ОП, и, возможно, это может быть ответом, но я точно не знаю, так ли это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .