我有一个应用程序应该能够向我的 wcf 服务发送数百个并发请求。该服务正在公开 http 联合绑定。
目前我正在使用单个客户端和 TPL 在多个线程上发送请求。我还将 system.net 最大连接数设置更改为 1000,以便 Windows 不会将 wcf 限制为最多 2 个并发请求。
我可以看到初始请求需要更多时间,因为他们正在获取身份验证令牌等,然后请求时间通常开始显着减少,但随后我间歇性地看到一些峰值,这与我拥有的服务器日志无关。
我想知道这是否是接近高吞吐量高度可扩展客户端的最佳方式。
我尝试在多个线程之间使用共享客户端代理并在多个线程之间共享 ChannelFactory。所有线程都使用 TPL 完成。
显示绑定
<basicHttpBinding>
<binding name="Binding1" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" closeTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>