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

принудительно установить тайм-аут rsync при зависшем соединении

У меня проблема с дефектным узлом циклического пересылки данных, с которого я выполняю синхронизацию данных. Один из узлов продолжает разрывать соединение данных с файловой системой, из которой поступают мои данные, и ему необходимо повторно подключиться, что может занять до нескольких минут. В это время rsync для этого конкретного файла не прерывается, он просто зависает на несколько минут, пока загрузка не продолжится. Поскольку это критичные по времени данные, это не жизнеспособный вариант, но вместо этого следует разорвать соединение как можно скорее, когда оно остановится, и повторно подключиться (что в любом случае будет балансировать нагрузку на следующий узел).

Может ли кто-нибудь придумать способ сообщить rsync об отмене передачи, которая была остановлена ​​более чем, например, 20 секунд?

Оператор сломанных узлов перемещения данных медленно реагирует на эту проблему, они знают об этом, но в данный момент ничего не делают, поэтому мне нужно найти решение на своей стороне.

Я пробовал использовать параметр --timeout, но, похоже, это не работает, когда соединение для передачи данных остановлено.

Если у вас есть представление о максимальной продолжительности каждого запуска rsync, вы можете использовать timeout:

$ timeout 120 /usr/bin/rsync <options>

Какой транспорт rsync вы используете? Если используется SSH, вы можете передать параметры конфигурации в SSH, чтобы время ожидания вашего соединения истекло. У меня нет хорошего метода для тестирования, но, возможно, ServerAliveInterval, и TCPKeepAlive варианты могут дать вам то, что вам нужно?