Клиент: 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 на обеих машинах, чтобы проверить, исправен ли маршрут / соединение между ними.