Я столкнулся со странной проблемой. Я обычно использую rsync
синхронизировать файлы между серверами, и теперь эта утилита ведет себя странно.
Во-первых, вот команда, которую я использую:
server1# rsync -av -e ssh ./server1_dir/ root@192.168.1.1:/server2_dir/
Он запускает процесс синхронизации должным образом, но не синхронизируется ни один файл, а только каталоги. На самом деле не все каталоги, так как rsync
процесс зависает на долгое время, что приводит к ошибке тайм-аута.
Если я убью процесс и сделаю еще одну попытку, он вообще не запустится. Единственное сообщение, которое я вижу:
sending incremental file list
Первая мысль была - firewall. Но на обоих серверах он не установлен. Я даже пробовал вручную скомпилировать последний rsync
версия безуспешно.
Может ли кто-нибудь помочь мне с этой проблемой? Большое спасибо.
Обновить. вывод strace на server1
root@server1 [~]# ps auxf|grep [r]sync
root 13958 0.0 0.0 70676 1232 pts/0 S+ 23:29 0:00 | \_ rsync -avv -e ssh directory1 root@192.168.1.1:/home
root 13959 0.0 0.2 58436 3256 pts/0 S+ 23:29 0:00 | \_ ssh -l root 192.168.1.1 rsync --server -vvlogDtpre.isf . /root
root@server1 [~]# strace -p 13959
Process 13959 attached - interrupt to quit
select(7, [3 4], [], NULL, NULL
Наконец-то проблема решена. Трудно поверить, но это был неверный MTU, установленный на основном сетевом интерфейсе. После изменения MTU на 1460 процесс синхронизации был запущен и немедленно завершился. Спасибо всем за ответы.
Недавно я столкнулся с такими же симптомами. Обе стороны strace показали, что они находятся в select () и ждут другой стороны. Затем я заметил, что на стороне сервера была большая очередь отправки в netstat, поэтому я начал искать решения на уровне сети. Я попытался уменьшить MTU, как указано выше, но это не помогло. Затем я отключил SACK с обеих сторон, и rsync снова заработал:
echo 0 > /proc/sys/net/ipv4/tcp_sack
Есть некоторое обсуждение ошибок Cisco с выборочным подтверждением и рандомизацией порядковых номеров, что, по крайней мере, является вероятной причиной того, что это имеет значение.