net.tcp バインディングを使用して IIS でホストされている WCF サービスにパフォーマンスの問題があります。
最近、システムを COM+ から WCF に移植したところ、テストでパフォーマンスの低下が示されました。サーバーのパフォーマンス カウンターを調べていて、CPU 使用率が非常に低い (< 10%)、使用可能なメモリが十分にある、ディスクの読み取りが正常であるなど... WCF パフォーマンス カウンターと未処理の数も確認しました呼び出し数が少なく (任意の時点で最大 1 回)、1 秒あたりの呼び出し数が非常に少ない (システムで最も使用されているサービスに対して 1 秒あたり 16 回の呼び出し)。当社のすべてのサービスは、呼び出しごと、シングル スレッドになるように構成されています...
私はすでにスロットリングをいじり、すべての設定のすべての値を 100 に設定しました (サーバーは 8 コアのマシンであり、実際のスロットリング値は、設定した値に CPU の数を掛けたものになると理解しています)。そこに問題はないと思います。
また、クライアントがその接続を効率的に使用していることも確認しました (使用できる既存の tcp 接続がある場合は、新しい接続を作成しません)。
現在の Web アプリケーションは約 50 のサービスをホストしており (そう、50 です!)、現時点では、これを問題の原因から排除しようとしています。複数のWebアプリケーションでサービスをホストすることを検討しており、それらに異なるポートを使用させたいと考えていますが、それに関していくつかの問題があり、インターネット上で段階的な手順がどこにも見つからないので、期待していますここの誰かが私を助けることができるでしょう:)
これまでに試したことは次のとおりです
。1) IIS の既定の Web サイトに別のバインドを追加しました (つまり、2 つの net.tcp バインドがあり、1 つは "808:*" バインド情報を使用するように設定されており、もう 1 つは "809:*" を使用します) 2) これらのポートがファイアウォールを通過できることを確認しました
3) 次に、ポートをフィルタリングするように個々の Web アプリケーションを構成しようとしました (これは Web.ポート 808 を使用する構成):
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="net.tcp//<servername>:808"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
このサービスに接続しようとすると、The service at the endpoint address 'net.tcp://<servername>/SomeService.svc' is available for the protocol of the address が表示されます
<serviceHostingEnvironmentgt; を削除すると、少し。ここで何が間違っていますか?
他のサービス、たとえば、ポート 809 で使用できるようにしたいサービスがまったく使用できません。エンドポイントが存在しないというエラー メッセージが表示されます。IIS がそのポートでリッスンしていないようです。すでに述べたように、ファイアウォールはこのポートの通過を確実に許可します。
このように多くのサービスがホストされている場合に最適なセットアップについてのアイデアや提案をいただければ幸いです。
ありがとう!