2012-03-19 10 views
5

Мы регулярно размещаем интерактивные киоски-процессоры на удаленных phsyical-сайтах, и я разработал приложение для обновления контента, которое выполняет ночную синхронизацию медиа-активов между каждым киоском (Windows 7 Pro) и размещенный CMS (виртуализированный сервер Ubuntu, работающий на linode.com). Обновитель контента создан в C# /. NET, и он запускает дочерний процесс Unison с помощью Process.Start(). Unison настроен на подключение к удаленному серверу через SSH с помощью закрытого ключа.Unison sync между Windows/Linux случайно зависает во время передачи

Проблема, с которой мы сталкиваемся, заключается в том, что когда порожденный как дочерний процесс из ContentUpdater.exe, Unison часто просто перестает общаться с удаленным сервером во время передачи и вешать на неопределенный срок. Нет простого перепрограммирования - иногда это работает, чаще всего это зависает. Он кажется более хрупким при больших обновлениях (400 Мбайт +), но это более гипотеза, чем что-либо еще. Когда он зависает, процесс Unison на клиенте (Windows 7) по-прежнему показывает 25% загрузки процессора, а сервер также показывает, что процесс унисон работает также - активность в сети отсутствует. Я знаю, что он подключается, потому что он всегда запускает процесс и получает частичную передачу, но он никогда не висит в одном и том же месте дважды. Я запускаю собственную двоичную сборку Windows Unison-2.40.63.exe и ту же версию унисона на удаленном сервере.

унисона командная строка на Windows, выглядит следующим образом:

Unison-2.40.63.exe -contactquietly -silent -batch -sshcmd "C:\KioskManagement\Apps\ssh2plink.bat" -sshargs "-p 22 -i C:\cygwin\home\someuser\.ssh\contentupdater-rsync-key.ppk" -ignore "Path {innovations,todaytomorrow,scale,mooreslaw,brilliantminds,askafab}" ssh://[email protected]//home/cms/base-preview/webapps/ROOT/applications C:\kioskdir\temp\applications -force ssh://[email protected]//home/cms/base-preview/webapps/ROOT/applications 

Для записи, я первоначально автор Апдейтера контента для использования Rsync (через Cygwin на Windows), но бил одни и те же вопросы. Чтобы увидеть, был ли транспорт ssh частью проблемы, я висел, продолжая его голову.

На данный момент я полностью запятнал. Проблема также повторяется на других серверах, поэтому я думаю, что это на стороне Windows. Я также склонен полагать, что проблема возникает только при вызове Unison/rsync из Process.Start() внутри другого процесса (UPDATE: я просто получил его для воспроизведения при запуске из командной строки) - он не кажется fail при запуске непосредственно из командной строки. Unison/rsync также никогда не выходят из строя, поэтому нет файлов журналов (если кто-то не знает какой-либо серверной трассировки или файла журнала на удаленном сервере, я могу проверить - полное раскрытие: я - разработчик FreeBSD и знаю немного о Ubuntu под капотом).

Заранее благодарим за понимание и идеи/решения!

Лучшее

ответ

1

Просто вписывается; У меня такая же проблема с использованием rsync/cygwin между двумя компьютерами Windows 7. Более старые дискуссии в сети предполагали, что проблема затрагивает только ssh-соединения, но метод демона rsync терпит неудачу для меня. Есть сообщения, притворяющиеся, что нужно перекомпилировать rsync из источника, который отключает HAVE_SOCKETPAIR, что, как говорят, делает работу rsync/ssh. Я не попытался это сделать.

+0

Это, кажется, не ответ. –

6

У меня была эта проблема. Мне потребовалось несколько дней, чтобы решить эту проблему. Закончилось, что добавление -halfduplex решило мою проблему.

Как указано в документации:

halfduplex Когда этот флаг установлен верно, Unison сеть связи вынуждена быть полудуплексный (клиент и сервер не одновременно испустить данные). Если вы столкнетесь с нестабильностью со своей сетевой ссылкой, это может помочь. Связь всегда полудуплексная при синхронизации с машиной Windows из-за ограничения текущей реализации Unison, которая может привести к тупиковой ситуации.

В моем случае я синхронизировал между Windows/OSX.

3

Я подтверждаю, что настройка «halfduplex = true» решила мои проблемы с подвеской. У меня была настройка клиентов Win7 и OSX и Linux-сервера в качестве центральной точки синхронизации. Вся клиентская синхронизация с сервером.

Проблемы возникли, когда я представил клиенту Mac изображение с тех пор, когда в обоих направлениях появились обновления. Установка «halfduplex = true» в профиле Unison решила мою проблему.

Как ни странно, Unison синхронизировал все тонкие гораздо более мелкие папки между двумя клиентами Win7 и сервером Linux, но в этом случае файлы намного меньше.

 Смежные вопросы

  • Нет связанных вопросов^_^