отправка большого файла с SCP на определенный сервер останавливается ровно на 2112 кБ

39

Существует определенный сервер ubuntu 10.04, где, если я нахожу ssh файл на нем с любого сервера, который находится за пределами офиса, где находится этот сервер (что означает, что любое использование scp-ing на этом сервере через LAN изнутри этого сервера всегда работает для по какой-то причине), то scp-ing не работает для любого файла размером более 2112 кБ и застревает в 2112 кБ. Так

scp -vvv /home/attila-szeremi/aszeremi.tar.gz  [email protected]:~/aszeremi.tar.gz

динамически показывает что-то вроде 1% 2112KB 909.2KB/s - stalled - в конце, где KB/s становится ниже и ниже.

Кто-нибудь знает, что может быть причиной этого и как я могу это исправить?

То, что я пробовал до сих пор:

  • Ограничение скорости с помощью scp -l 2000. Это просто заставило файл отправлять медленнее, а при 2112 КБ он снова застрял.
  • Включение компрессии с -C. Он все еще застопорился в том же размере.
  • 0
    Убедитесь, что в месте назначения есть место для всего файла.
  • 0
    Та же проблема. Ни один из ответов не помог мне. Я переключился на rsync и проблема ушла. Не решение, а достойный обходной путь в моем случае.
Показать ещё 1 комментарий
Теги:
ssh
scp

5 ответов

30
Лучший ответ

Кажется, я нашел исправление. Мне нужно было установить значение mtu карты LAN на 1492:

# ifconfig eth0 mtu 1492
  • 0
    Спасибо! Это решает проблему остановки SCP, с которой я столкнулся при копировании файлов на виртуальную машину CentOS 6.4. Переводы будут останавливаться в той же точке 2112 КБ.
  • 0
    Вот он 2014 год, работает последняя версия Debian, новая установка, и это все еще проблема на моем ПК? Спасибо за исправление. Есть идеи, почему это не 1492 из коробки?
33

Единственный способ избавиться от этой проблемы - отключить TCP SACK:

$ sudo sysctl -w net.ipv4.tcp_sack=0
  • 1
    Работал на Ubuntu 12.04, спасибо!
  • 2
    Работает и на Ubuntu 14.04. Изменение MTU или ограничение скорости не помогло. После отключения SACK я смог без проблем вернуться на неограниченную скорость. Это должно быть ответом.
Показать ещё 2 комментария
11

В новых Linux-системах команда ifconfig может быть заменена на ip

Команда для установки mtu становится:

# ip link set dev eth0 mtu 1492
2

Я застрял с тем же именем Mac OS X и @dav.garcia answer сделал это для меня с небольшим изменением:

  $ sudo sysctl -w net.inet.tcp.sack=0
0

Я видел эту проблему. Ни одно из приведенных выше предложений не помогло мне, но они вернули меня на правильный путь. Я стоял за брандмауэром с установкой MTU, установленной на 1300. Установка MTU на моей локальной сети действительно низка (576, несколько случайная) заставила мои пакеты перестать удаляться.

$ sudo ifconfig eno1 mtu 576

Мне пришлось делать это на каждом из моих Linux-клиентов. По какой-то причине у машины Windows в той же подсети не было проблем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню