1

Я пытаюсь передать файлы как можно быстрее через 10-гигабитное сетевое соединение. До сих пор я использовал rsync для перемещения больших файлов по сети, но сейчас я пробую mbuffer, потому что слышал его быстрее. Проблема в том, что я не получаю такого увеличения производительности, как я ожидал, тем более что я использую 10-гигабитное сетевое соединение между двумя компьютерами.

Это мои текущие аргументы mbuffer:

mbuffer -m 1G -s 512M -P 10 -i "$currentFile" | ssh $outputTarget "cat - > $outputDir/$filename" > $debugOut

Кто-нибудь есть какие-либо советы о том, как я могу улучшить скорость по сети? Я новичок в mbuffer и не знаю, какие аргументы лучше всего подойдут для моей ситуации. Прямо сейчас я получаю около 110 МБ / с за файл 1 ГБ, который я сделал из случайных чисел.

1 ответ1

1

Этот ответ, вероятно, слишком поздно, чтобы помочь ФП, поэтому следующее для потомков.

Узкое место, вероятно, не имеет ничего общего с mbuffer, но с тем фактом, что данные отправляются через ssh-шифрованное соединение. Другими словами, узким местом является скорость, с которой однопоточный процесс ssh может зашифровать трафик на отправляющем хосте и расшифровать его на принимающем хосте.

Для вашей цели, вероятно, лучше использовать опцию -O mbuffer для отправителя и опцию -I для получателя. Это заставляет mbuffer отправлять данные напрямую по незашифрованному каналу TCP, что продвигает вашу сеть настолько сильно, насколько позволяют ОС, драйверы и оборудование.

Это двухэтапный процесс, потому что вам нужно запустить mbuffer как на принимающем, так и на принимающем узле, например так:

  1. Сначала запустите mbuffer на приемнике. Он будет прослушивать соединение через порт, заданный параметром -I (5567 - это просто пример; выберите свой собственный номер порта):

    ssh $outputTarget mbuffer -I 5567 \>$outputDir/$filename
    
  2. Затем инициируйте перевод на отправителя:

    mbuffer -i "$currentFile" -O $outputTarget:5567
    

Как указано выше, принимающий процесс mbuffer, работающий на $ outputTarget, будет прослушивать и принимать TCP-соединение от любого, кто подключается к этому сокету, а не только от отправляющего процесса mbuffer, запущенного на шаге 2. Таким образом, вы должны помнить о том, что mbuffer, при использовании таким образом, не так безопасен, как ssh, не только потому, что нет шифрования данных, но и потому, что нет способа быть уверенным, что предполагаемый отправитель является только один инициирует соединение с портом прослушивания получателя. Если кто-то не сканирует порт вашего приемника или иным образом не знает, что вы делаете, и не пытается использовать вас, последнее предостережение редко бывает проблематичным. Отсутствие шифрования, с другой стороны, вполне может быть пробой в зависимости от варианта использования.

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