
При копировании больших файлов из одного места на тестовый сервер Linux я постоянно получаю разрывы соединения в районе 1,7-1,9 ГБ. Используемый протокол не имеет значения (SFTP/SCP/SMB).
Я предполагаю, что целевой сервер не может достаточно быстро выделить блоки на диске, что приводит к узкому месту в хранилище или ЦП, что и вызывает отключение. К тому времени, как целевая система догоняет, исходная система уже выдает исключение. Кажется, я могу подтвердить это, регулируя максимальную скорость передачи примерно до 15k kb/s (на которой она сейчас работает).
Мне было интересно, есть ли у кого-нибудь советы, как предотвратить возникновение этой проблемы. Я думаю, что-то вроде игры с буферами или более длительными тайм-аутами на хостовой или целевой системе. Может быть, сторонний клиент копирования? (Я действительно скучаю по отсутствию собственного rsync в Windows)
У кого-нибудь есть какие-нибудь советы по этому поводу? Самый удобный способ копирования — это использование системы Windows на сервере Samba, что я и пытаюсь сделать.
EDIT: Чтобы не слишком раздувать комментарии ниже, еще одно наблюдение, которое подтвердит мою идею о узком месте ресурсов. Если я специально останавливаю свой копировальный клиент каждые несколько сотен мегабайт или около того (и, предположительно, позволяю цели догнать), то копирование проходит. Думаю, мне придется выяснить, как сделать этот захват пакетов (копии размером 2GiB?!). Может быть, игра с nice/ionice могла бы помочь, снизив приоритет smbd.
решение1
пока правда; делать сон 10; echo 1 > /proc/sys/vm/drop_caches; готово
У меня с этим много проблем, но это существенно помогло.