Назад | Перейти на главную страницу

RSync через SSH зависает и не работает с тайм-аутом

Клиент: Gentoo, GCC 4.3.4, RSync 3.0.9 Сервер: Ubuntu 10.04.4 LTS, RSync 3.0.7

Подключение клиента и сервера через Интернет, скорость около 2 Мбит / с. Пинг в порядке.

RSync, вызываемый для любых файлов в любом направлении, зависает на случайных файлах, а затем по истечении времени ожидания дает сбой:

[sender] io timeout after 30 seconds -- exiting
rsync error: timeout in data send/receive (code 30) at io.c(140) [sender=3.0.9]
[sender] _exit_cleanup(code=30, file=io.c, line=140): about to call exit(30)

В 1/10 попыток все прошло правильно.

Я попытался добавить параметры SSH TcpRcvBufPoll = yes, KeepAlive = yes; отключить и включить сжатие rsync - без изменений.

Как сделать так, чтобы rsync работал правильно?

Сначала я бы попытался включить многословие ssh-транспорта:

rsync -av -e "ssh -vv" /src user@host/dest

Во-вторых, он может зависать в файле или файловой системе на удаленной стороне. Можете ли вы подключиться к пульту по ssh и попытаться атаковать те же цели?

Один из подходов - использовать tcpdump

tcpdump port 22 and host <IP>

и Strace

strace -f -o xxx -p <PID of the rsync process>

работает с двух сторон. Когда истекает тайм-аут, вы должны увидеть необычные вещи, по крайней мере, в выводе tcpdump.

Когда новая информация станет доступной, вы сможете найти источник проблемы.

Кроме того, запустите traceroute или mtr на обеих машинах, чтобы проверить, исправен ли маршрут / соединение между ними.