web-dev-qa-db-ja.com

WCFHTTPよりもTCP

TCPはWCFのHTTPよりも高速であることを理解していますが、どれだけ知りたいのですか。HTTPを使用する大規模なアプリケーションでパフォーマンスの問題があり、netTcpに移行するかどうかを検討しています。投資を価値あるものにするのに十分なパフォーマンスの向上をもたらします。

Httpバインディングと比較してnetTCPによって送信されるデータの量の違いを知っている人はいますか?

23
Mark 909

これまでのところ多くの回答がありますが、具体的なデータはありません。

Microsoftは、あなたが質問したことを正確に測定するためのテストを作成しました-HTTPとTCP for WCFサービス(テストではパケットサイズは考慮されていません!)

Figure 1: Peak TPS Rates for the Web Service Test. IBM WebSphere Trade 6.1 is running in its default EJB/Entity Beans with Container Managed Persistence (CMP).

これが示すのは、このテストのメッセージに対して、TCP /バイナリがHTTP/xmlのほぼ2倍のスループットを提供することです。このテストのボトルネックは、ネットワークではなくサーバーCPUでした。メッセージがより複雑になり(またはより少なく)、ネットワークがより(またはより少なく)制約され、アプリコードがより(またはより少なく)CPUに負荷がかかるため、結果は異なります。しかし、これはあなたにアイデアを与えます。

実際、Stocktraderベンチマークは、Windows Server上のWCFのパフォーマンスをLinux上のWebSphereのパフォーマンスと比較して、競争力のあるものでした。ただし、その一環として、MSはHTTPを使用したWCFのパフォーマンスとTCPを使用したWCFのパフォーマンスも比較しました。

完全なStocktraderレポートをダウンロード

42
Cheeso

ISO/OSIモデルによると、TCPはトランスポート層です。HTTPはTCPの上に実装されたアプリケーション層です。したがって、HTTPは、何があっても常にオーバーヘッドを追加します。

一般的に。 HTTPがアプリケーション層の問題のかなりの量を解決する場合は、HTTPを使用します。これは、HTTPが十分に確立され、相互運用性が高く、実績があるためです。アプリケーションがHTTPを使用している場合でも、処理を実行するためにかなりの作業を行う必要があり、TCPを使用すると処理がより良く簡単になる場合は、必ず、低レベルのプロトコルを選択してください。

特にWCFに関しては、TCPのみの実装がどのようになっているのかわかりません。 HTTPよりも簡単だと思います。 HTTPはおそらく「防弾」通信媒体として使用され、HTTPオーバーヘッドのコストは、プロトコルがプロキシサーバーなどを簡単に通過するという事実によって正当化されます。

5
martona

それほど単純ではありません。 HTTP、TCPおよび other トランスポートオプションには、速度以外のバランスを取るオプションがあります。信頼性は、実際のアプリケーションに応じて、アプリケーションの安定性に大きな役割を果たす可能性がありますdoes。プロトコルを反転してプログラムを数回実行し、それが良いテストだと考えないでください。プロトコルについて読んで、オプションと要件。できれば資格のあるネットワーク管理者の助けを借りて、いくつかのプログラム、負荷、パフォーマンス、およびネットワークテストを実行します。

更新:質問を変更したので、理論上のパケットサイズの測定について突っ込むのではなく、パフォーマンスの低下の原因を突き止める必要があることにも注意する必要があります。他のみんなが言っているように、テストを実行します。

5
P.Brian.Mackey

WCFの最も高価な部分はシリアル化だと思います。それと比較すると、Webサーバースタックのオーバーヘッドは約5〜10%であり、TCPのみのトランスポートによって排除されます。質問は、Webサーバーの追加の利点が必要ですか。

4
fejesjoco

いくつかのテストをしてください!それはあなたのネットワークとあなたのサービスが実際に何をしているかに依存します。

TCP接続はスタック内で低く、接続が開かれると新しい要求を作成するオーバーヘッドがないため、通常は高速になります。