1

約 100 のクライアントで実行されている NetTcpBinding を備えた WCF サービスがあります。クライアントは定期的にサーバーから情報をポーリングし、しばらくするとサービスが応答しなくなります。

netstat を見ると、多くの接続が CLOSE_WAIT 状態になっていることがわかります。

これは私のバインディングです:

<netTcpBinding>
  <binding  name="default" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxConnections="10000">
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
  </binding>
</netTcpBinding>

また、 closeTimeoutの値をデフォルトの 00:01:00 から00:00:10に変更しようとしましたが、効果はありませんでした。

マシンは Windows Server 2008 R2 64 ビットです。

アップデート:

今追加しましたServiceThrottlingBehaviorが、結果は同じです。

new ServiceThrottlingBehavior
{
 MaxConcurrentCalls = 1000,
 MaxConcurrentInstances = 1000,
 MaxConcurrentSessions = 1000
};

Update2

SessionMode を NotAllowed に設定し、バインディングをストリーミングに変更しました。

パフォーマンスを改善したり、問題を解決したりするために私ができることはありますか?

4

4 に答える 4

0

ルーターに問題がないことを確認します。コンシューマー グレードのルーターの中には、許可されるオープン ソケット/接続の数に上限があるものがあるためです。

于 2013-10-14T21:21:38.543 に答える