2012-03-19 7 views
5

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

ContentUpdater.exeから子プロセスとして生成されると、Unisonは転送中にリモートサーバーとの通信を停止し、無期限にハングすることが多いという問題があります。シンプルなレプロはありません - 時にはそれが動作しますが、頻繁にハングアップします。それはより大きいアップデート(400MB +)でより壊れやすいようですが、それは他の何よりも推測です。ハングしても、クライアント(Windows 7)のユニゾンプロセスは25%のCPU使用率を示しており、サーバーはユニゾンプロセスも実行していることを示しています。ネットワークアクティビティはありません。私はそれが常にプロセスを開始し、転送の途中で取得するので、それが接続していることを知っているが、同じ場所に2回ハングすることはありません。私はUnison-2.40.63.exeのネイティブWindowsバイナリビルドとリモートサーバ上の同じバージョンの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://[email protected]//home/cms/base-preview/webapps/ROOT/applications C:\kioskdir\temp\applications -force ssh://[email protected]//home/cms/base-preview/webapps/ROOT/applications 

、私はもともと(Windows上のCygwin経由)のrsyncを使用するために、コンテンツアップデータを執筆していたが、同じ問題を打ちました。 sshの輸送が問題の一部であるかどうかを確認するために、私はtried using rsync in server mode (rsyncd)しかし、吊り下げはその頭を後ろへと続けた。

この時点で、私は完全に困惑しています。この問題は他のサーバーでも確認されているので、Windows側の問題だと思っています。また、別のプロセスの中でProcess.Start()からUnison/rsyncを呼び出すときにのみ問題が発生すると思っています(UPDATE:コマンドラインから実行したときにreproを取得しました)。コマンドラインから直接実行すると失敗します。 Unison/rsyncもエラーにならないので、チェックするログファイルはありません(誰かが私がチェックできるリモートサーバ上の何らかのサーバ側のトレースやログファイルを知っていない限り)。完全公開:私はFreeBSDのオタクです。 Ubuntuについては貴重なものではありません)。

ありとあらゆる洞察力/アイデアやソリューションをお寄せいただきありがとうございます!

ベスト

答えて

1

ちょうどキンミングしています。私は2つのWindows 7のコンピュータ間でrsync/cygwinを使って同じ問題を抱えています。以前の議論では、問題がssh接続にしか影響しないと示唆されていましたが、rsyncデーモンメソッドが失敗しました。 rsync/sshを動作させると言われるHAVE_SOCKETPAIRを解除するソースからrsyncを再コンパイルしなければならないというメッセージがあります。私はそれを試しに周りにいない。

+0

これは答えではありません。 –

6

この問題がありました。それを解決するために私に数日間かかりました。 -halfduplexを追加すると、私の問題は解決しました。

文書に述べられているように:このフラグをtrueに設定すると

半二重 、ユニゾンのネットワーク通信は、半二重(クライアントとサーバが同時にデータを発することはありません)を強制されます。ネットワークリンクで不安定な状態が発生した場合は、これが役立ちます。デッドロックを招く可能性のあるUnisonの現在の実装の制限のため、Windowsマシンと同期するときは常に通信が半二重になります。

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

3

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

Macクライアントをピクチャに導入したときに問題が発生したのは、両方向の更新が開始されてからです。 Unisonプロファイルで "halfduplex = true"を設定すると、私の問題が解決しました。

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

関連する問題