我有WCF客戶端向服務發送請求。我的業務代碼調用客戶端API每秒發送300+個請求。但我的客戶端根據我的服務和WCF ServicePoint的性能計數器只發送大約50個服務。爲什麼我的客戶端如此緩慢地發送請求?
而且我在代碼中將ServicePointManager.DefaultConnectionLimit增加到1000,並且在服務配置文件中將maxConCurrentCalls設置爲1000,但幾乎沒有改進。
我想在WCF客戶端可能會有請求發送隊列。有什麼方法可以配置它並加快我的客戶端速度。
這裏是我的客戶端配置:
<basicHttpBinding>
<binding name="Binding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2000000" maxBufferPoolSize="524288" maxReceivedMessageSize="2000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
簡單測試將啓動兩個併發客戶端,並查看它們是否以兩倍於服務器的速率生成命中。如果他們這樣做,這是一個客戶端限制問題。 – TheJacobTaylor
我找到了原因。有一個由IIS 6.0定義的線程限制(50)。針對此問題的解決方案是使用定製主機託管我的服務。 –