Мы регулярно разворачиваем процессоры интерактивного киоска на удаленных физических сайтах, и я разработал приложение для обновления контента, которое выполняет ночную синхронизацию мультимедийных ресурсов между каждым киоском (Windows 7 Pro) и размещенным CMS (виртуализированный сервер Ubuntu, работающий на линоде)..com).Средство обновления контента создано в C # / .NET и порождает дочерний процесс Unison с помощью Process.Start ().Unison настроен для подключения к удаленному серверу через SSH с помощью закрытого ключа.
Проблема, с которой мы сталкиваемся, заключается в том, что при порождении в качестве дочернего процесса из ContentUpdater.exe Unison часто просто прекращает связь судаленный сервер во время переноса и зависают до бесконечности.Простого воспроизведения нет - иногда работает, чаще всего зависает.Кажется, он более хрупок при больших обновлениях (более 400 МБ), но это скорее предположение, чем что-либо еще.Когда он зависает, процесс Unison на клиенте (Windows 7) по-прежнему показывает 25% загрузки ЦП, и сервер также показывает, что процесс unison также работает - сетевой активности просто нет.Я знаю, что он соединяется, потому что он всегда запускает процесс и проходит через часть передачи, но он никогда не зависает в одном и том же месте дважды.Я использую двоичную сборку Windows Unison-2.40.63.exe и ту же версию unison на удаленном сервере.
Командная строка Unison в 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://cmsuser@server//home/cms/base-preview/webapps/ROOT/applications C:\kioskdir\temp\applications -force ssh://cmsuser@server//home/cms/base-preview/webapps/ROOT/applications
Для протокола, я изначально создал средство обновления контента для использования rsync (через cygwin в Windows), но столкнулся с теми же проблемами.Чтобы выяснить, была ли проблема с ssh-транспортом, я попытался использовать rsync в режиме сервера (rsyncd) , но зависание продолжало поднимать голову.
На данный момент яполностью в тупик.Проблема повторяется и на других серверах, так что я думаю, что это связано с Windows.Я также склонен полагать, что проблема возникает только при вызове Unison / rsync из Process.Start () внутри другого процесса (ОБНОВЛЕНИЕ: я только что получил его для воспроизведения при запуске из командной строки) - похоже, это не такОшибка при запуске непосредственно из командной строки.Unison / rsync также никогда не выдает ошибку, поэтому нет файлов журналов для проверки (если кто-то не знает какой-либо трассировки на стороне сервера или файла журнала на удаленном сервере, я могу проверить - полное раскрытие: я фанат FreeBSD и знаю,очень мало об Ubuntu под капотом).
Заранее благодарим за любые идеи и решения / *! 1014 *
Best