gpt4 book ai didi

.net - Windows/Linux 之间的一致同步在传输过程中随机挂起

转载 作者:可可西里 更新时间:2023-11-01 13:28:49 25 4
gpt4 key购买 nike

我们定期将交互式信息亭 CPU 部署到远程物理站点,我开发了一个内容更新程序应用程序,每晚在每个信息亭 (Windows 7 Pro) 和托管 CMS(在 linode 上运行的虚拟化 Ubuntu 服务器)之间执行媒体 Assets 同步.com)。内容更新程序是在 C#/.NET 中编写的,它使用 Process.Start() 生成一个子 Unison 进程。 Unison 配置为使用私钥通过 SSH 连接到远程服务器。

我们遇到的问题是,当作为 ContentUpdater.exe 的子进程生成时,Unison 通常会在传输期间简单地停止与远程服务器的通信并无限期挂起。没有简单的复制 - 有时它可以工作,但更多时候它会挂起。它似乎在较大的更新 (400MB+) 上更脆弱,但这比其他任何事情都更具推测性。当它确实挂起时,客户端 (Windows 7) 上的 Unison 进程仍显示 25% 的 CPU 使用率,并且服务器也显示 unison 进程也在运行——只是没有网络事件。我知道它正在连接,因为它总是启动进程并在传输过程中进行,但它永远不会卡在同一个地方两次。我在远程服务器上运行 Unison-2.40.63.exe 的 native Windows 二进制版本和相同版本的 unison。

Windows 上的 Unison 命令行如下所示:

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(通过 Windows 上的 cygwin),但遇到了同样的问题。要查看 ssh 传输是否是问题的一部分,我 tried using rsync in server mode (rsyncd)但绞刑继续抬头。

在这一点上,我彻底被难住了。该问题也在其他服务器上重现,所以我认为它在 Windows 方面。我也倾向于相信这个问题只发生在从另一个进程中的 Process.Start() 调用 Unison/rsync 时(更新:我只是在从命令行运行时重现它) - 它似乎没有直接从命令行运行时失败。 Unison/rsync 也永远不会出错,所以没有日志文件可以检查(除非有人知道我可以检查的远程服务器上的某种服务器端跟踪或日志文件——完全披露:我是一个 FreeBSD 极客,并且知道关于 Ubuntu 的宝贵信息)。

提前感谢您提供任何和所有见解/想法/解决方案!

最佳

最佳答案

我遇到了这个问题。花了我几天时间来解决它。添加 -halfduplex 解决了我的问题。

如文档中所述:

半双工当此标志设置为 true 时,Unison 网络通信被强制为半双工(客户端和服务器永远不会同时发出数据)。如果您的网络链接不稳定,这可能会有所帮助。由于 Unison 当前实现的限制可能导致死锁,因此在与 Windows 机器同步时,通信始终是半双工的。

在我的例子中,我在 Windows/OSX 之间同步。

关于.net - Windows/Linux 之间的一致同步在传输过程中随机挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com