5

私たちはインタラクティブなキオスクの CPU をリモートの物理サイトに定期的に展開しており、各キオスク (Windows 7 Pro) とホストされた CMS (linode.com で実行されている仮想化された Ubuntu サーバー) の間でメディア アセットの夜間同期を実行するコンテンツ アップデーター アプリケーションを開発しました。 . コンテンツ アップデーターは C#/.NET で作成され、Process.Start() を使用して子 Unison プロセスを生成します。Unison は、秘密鍵を使用して SSH 経由でリモート サーバーに接続するように構成されています。

私たちが直面している問題は、Unison が ContentUpdater.exe から子プロセスとして生成されると、転送中にリモート サーバーとの通信を停止し、無期限にハングすることがよくあることです。単純な再現性はありません。動作することもありますが、多くの場合、ハングします。大規模な更新 (400MB 以上) では壊れやすいようですが、それは何よりも推測です。ハングした場合、クライアント (Windows 7) の Unison プロセスはまだ 25% の CPU 使用率を示しており、サーバーも同様に実行中の Unison プロセスを示しています。ネットワーク アクティビティはまったくありません。常にプロセスを開始し、転送の途中で取得するため、接続していることはわかっていますが、同じ場所で 2 回ハングすることはありません。Unison-2.40.63.exe のネイティブ Windows バイナリ ビルドを実行しています。

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

記録のために、私は元々 (Windows の cygwin を介して) rsync を使用するようにコンテンツ アップデーターを作成していましたが、同じ問題に直面していました。ssh トランスポートが問題の一部であるかどうかを確認するために、サーバー モード (rsyncd) で rsync を使用してみましたが、ハングは頭を悩ませ続けました。

この時点で、私は完全に困惑しています。この問題は他のサーバーでも再現されるため、Windows 側の問題だと思います。また、別のプロセス内で Process.Start() から Unison/rsync を呼び出したときにのみ問題が発生すると考える傾向があります (更新: コマンドラインから実行するときに再現するようになりました)-そうではないようですコマンドラインから直接実行すると失敗します。Unison/rsync もエラーになることはないので、チェックするログファイルはありません (リモートサーバー上のある種のサーバー側のトレースまたはログファイルを誰かが知っていない限り、私はチェックできます -- 完全な開示: 私は FreeBSD オタクであり、知っていますボンネットの下の Ubuntu についての貴重な情報はほとんどありません)。

あらゆる洞察/アイデア/解決策を前もって感謝します!

一番

4

3 に答える 3

7

この問題がありました。それを解決するのに数日かかりました。-halfduplex を追加することで問題が解決したことを終了しました。

ドキュメントに記載されているように:

halfduplex このフラグが true に設定されている場合、Unison ネットワーク通信は強制的に半二重になります (クライアントとサーバーが同時にデータを送信することはありません)。ネットワーク リンクが不安定な場合は、これが役立つ場合があります。Unison の現在の実装の制限により、デッドロックが発生する可能性があるため、Windows マシンと同期する場合、通信は常に半二重です。

私の場合、Windows/OSX 間で同期していました。

于 2012-07-31T05:12:23.310 に答える
4

「halfduplex = true」設定でハングアップの問題が解決したことを確認しました。Win7 と OSX の「クライアント」と Linux サーバーを中央の同期ポイントとしてセットアップしました。すべてのクライアントがサーバーと同期します。

この問題は、私が Mac クライアントを写真に紹介したときに始まりました。Unisonプロファイルで「halfduplex = true」を設定すると、問題が解決しました。

不思議なことに、Unison は 2 つの Win7 クライアントと Linux サーバーの間で、はるかに小さいディレクトリをすべて正常に同期しましたが、その場合、ファイルははるかに小さくなります。

于 2013-02-19T01:12:38.277 に答える
1

チャイムを鳴らすだけです。2 台の Windows 7 コンピューター間で rsync/cygwin を使用すると、同じ問題が発生します。ネット上の以前の議論では、問題は ssh 接続にのみ影響することが示唆されていましたが、rsync デーモンの方法は私には失敗しました。HAVE_SOCKETPAIR を設定せずにソースから rsync を再コンパイルする必要があるというふりをするメッセージがあります。これにより、rsync/ssh が機能すると言われています。私はそれを試してみませんでした。

于 2012-06-08T06:28:30.860 に答える