В соответствии с потребностями эксперимента я установил MTU на 8000
. После этого, когда я использую scp
для копирования больших файлов, он остановился на 0.00%
. Я попробовал scp -l
или scp -C
и включил/выключил tcp_sack
, но он все еще не работал. И я не могу изменить размер MTU для сравнения результатов эксперимента. Есть ли другой способ помочь?
Scp остановился при копировании больших файлов
Ответ 1
Попытка комплексного решения, поскольку в зависимости от вашей ситуации могут быть несколько проблем и ограничений.
Rsync
Мой предпочтительный вариант: использование rsync не дает этой проблемы и, на мой взгляд, немного более универсален. он отслеживает, какие файлы уже есть, поэтому, если соединение когда-либо сломается, оно может подняться с того места, где оно остановилось - попробовать флаг --partial
тоже - между прочим.
Вместо
scp local/path/some_file [email protected]:"/some/path/"
вы можете просто сделать
rsync -avz --progress local/path/some_file [email protected]:"/some/path/"
Я тестировал это несколько раз, когда scp
предоставил мне ту же проблему, что и вам, и теперь я просто использую rsync по умолчанию.
Предельная скорость
Не решение для OP, поскольку MTU фиксируется в этой ситуации (и, вероятно, не проблема здесь), но если виновник является медленным/ненадежным соединением между двумя дисками, установка ограничения скорости уменьшает задержки, которые делают TCP-соединение - за счет более медленной передачи курса. Это связано с тем, что scp захватывает всю ширину полосы пропускания, которую он может получить, если вы не укажете максимальную скорость передачи данных в килобитах, например:
scp -l 8192 local/path/some_file [email protected]:"/some/path/"
Этот не всегда работает.
Опция сжатия
опция scp -C может ускорить передачу, уменьшая вероятность того, что перенос киосков.
Отключение TCP SACK
Как упоминалось OP, и здесь.
sudo sysctl -w net.ipv4.tcp_sack=0
LAN-карта MTU
Снова MTU fix, не обязательно передачи, особенно:
ifconfig eth0 mtu 1492
или на более новых (Linux) системах:
ip link set dev eth0 mtu 1492
Другие
Если все остальное не работает, this содержит список других потенциальных решений, не включенных здесь.
Более экзотическая ошибка hpn также может быть виновата.
Ответ 2
Есть ли вероятность, что вы находитесь за брандмауэром Cisco ASA? Если это так, отключите "рандомизацию последовательности номеров", и это поможет многое - также отключите TCP Offload (ethtool -K $INTERFACE tso off gso off gro off), если вы находитесь в Cisco ASA с сетевыми картами Broadcom на своем сервере.