2

サーバー上で小さなコンソール サービスを実行しており、そのエンドポイントを Azure Service Bus 名前空間に公開しています。ストリーミング モードで webHttpRelayBinding を使用しています。ここにあるテストのためだけにマイクロソフトのサンプルを使用しています: http://code.msdn.microsoft.com/windowsazure/Relayed-Messaging-Bindings-a6477ba0#content

サービス バスの名前空間に接続し、サービス インターフェイスを呼び出す別のコンピューターでコンソール アプリ クライアントを実行しています。サンプル呼び出し GetImage を使用しています。そのメソッドで行っているのは、5MB の PDF ファイルのストリームを返すことだけです。

私のサービスをホストしているサーバーには、20MB のアップロード/ダウンロード ファイバー回線があります。それは広く開いており、非常に高速です。ブラウザを開いてサービスにアクセスすると、 https : //namespace.servicebus.windows.net/Image/GetImage で 5MB の PDF ファイルが正しくプルされますが、ファイルは毎秒 90K から 100K でしかストリーミングされません。最初は、サーバーからのアップロード速度によって制限されていると思っていましたが、正当化するのが難しい 20MB のファイバーを上下に使用していました。そこで、わずか 750K のアップロード速度でサービスを自宅のコンピューターに移動しました。サービスを起動すると、リレーがホストされます。次に、私の友人が自宅のブラウザから同じ 5MB の PDF ファイルを取得するためにサービスにアクセスしたところ、1 秒あたり 90K から 100K でファイルが転送されました。

これがなぜなのか、私は困惑しています。誰かがここで私に洞察を与えることができますか? 必要なすべてのコードをお見せできますが、問題を完全に説明し、私が使用しているマイクロソフトのサンプルを参照するだけで十分だと思いました。

前もって感謝します。

4

2 に答える 2

1

かなり後の回答ですが、この質問は私が現在取り組んでいることと関連があることがわかりました。

提案どおり、ハイブリッド接続モードで NetTcpRelayBinding を試すことをお勧めします。

http://msdn.microsoft.com/en-us/library/microsoft.servicebus.tcprelayconnectionmode.aspx

既定では、NetTcpRelayBinding はリレーを使用します。つまり、トラフィックは Azure を通過します。ハイブリッドでは、ハンドシェイクのみが Azure 経由で行われ、直接接続が確立されます。ただし、メッセージ レベルのセキュリティを設定する必要がある場合と必要でない場合があるハイブリッド セットアップでは、転送セキュリティが失われることに注意してください。

このアプローチを試す場合は、速度が向上することをお知らせください。

ありがとう!

于 2013-06-06T20:19:39.837 に答える
0

考慮すべき点がいくつかあります。

  • Service Bus Relay を使用する場合、最悪の接続条件 (両側で NAT、ファイアウォール、直接接続なし) では、すべての要求が Service Bus のデータセンターを通過します。サーバーのダウンロード/アップロード速度は重要ですが、その間にあるデータセンターのネットワーク機能も考慮する必要があります。リレーをホストしている場所はどこですか? あなたとあなたのユーザーに近いデータセンターを使用してみましたか?

  • サービスをどのようにホストしていますか?それは WCF ですか、それとも IIS ですか? リレーを使用せずにベンチマークを実行して、スローダウンが実際に SB に起因するものであり、他の要因ではないことを検証することをお勧めします。

  • http ベースのプロトコルのみを使用するという制約がありますか? 代わりに netTcpRelayBinding を使用すると、パフォーマンスが向上する可能性があります (ただし、ストリーミング機能については完全にはわかりません)。

于 2013-05-25T01:46:39.740 に答える