Мы регулярно размещаем интерактивные киоски-процессоры на удаленных 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 под капотом).
Заранее благодарим за понимание и идеи/решения!
Лучшее
Это, кажется, не ответ. –