Похоже, это связано с этим , но это несколько другое.
Существует связь WAN между двумя сайтами компании, и нам нужно передать один очень большой файл (дамп Oracle, ~ 160 ГБ).
У нас полная пропускная способность 100 Мбит / с (протестировано), но похоже, что одно TCP-соединение просто не может его максимально использовать из-за того, как работает TCP (ACK и т. Д.). Мы протестировали связь с iperf , и результаты значительно изменились при увеличении размера окна TCP: с базовыми настройками мы получаем пропускную способность ~ 5 Мбит / с, с большей WS мы можем получить до ~ 45 Мбит / с, но не более того. Задержка сети составляет около 10 мс.
Из любопытства мы запустили iperf, используя более одного соединения, и обнаружили, что при запуске четырех из них они действительно достигают скорости ~ 25 Мбит / с каждое, заполняя всю доступную полосу пропускания; поэтому ключ, по-видимому, заключается в выполнении нескольких одновременных передач.
С FTP все становится хуже: даже с оптимизированными настройками TCP (большой размер окна, максимальный MTU и т. Д.) Мы не можем получить более 20 Мбит / с за одну передачу. Мы одновременно пытались передавать по FTP несколько больших файлов, и на самом деле все стало намного лучше, чем при передаче одного; но затем виновником стал дисковый ввод-вывод, потому что очень скоро чтение и запись четырех больших файлов с одних и тех же узких мест диска; кроме того, мы, похоже, не можем разбить этот один большой файл на более мелкие, а затем объединить его, по крайней мере, в неприемлемое время (очевидно, мы не можем тратить время на сращивание / объединение файла, сравнимое со временем передавая это).
Идеальным решением здесь был бы многопоточный инструмент, который мог бы передавать различные фрагменты файла одновременно; вроде как одноранговые программы, такие как eMule или BitTorrent, уже делают, но из одного источника в один пункт назначения. В идеале этот инструмент позволил бы нам выбирать, сколько параллельных соединений использовать, и, конечно, оптимизировать дисковый ввод-вывод, чтобы не переходить (слишком) безумно между различными разделами файла.
Кто-нибудь знает такой инструмент?
Или кто-нибудь может предложить лучшее решение и / или то, что мы уже не пробовали?
PS Мы уже думали о резервном копировании на ленту / диск и физической отправке его по назначению; это было бы нашей крайней мерой, если бы WAN просто не сократил ее, но, как сказал А.С. Таненбаум, «никогда не стоит недооценивать пропускную способность универсала, полного лент, несущихся по шоссе».