我有一个运行 InstanceContextMode = PerCall、ConcurrencyMode = Multiple、TCP 的 WCF 服务,并且托管在 Selfhost(Windows 服务)和 IIS7/IIS8 中。
节流设置为:
<serviceThrottling maxConcurrentCalls="2000" maxConcurrentSessions="2147483647" maxConcurrentInstances="2000"/>
绑定看起来像这样:
<binding name="netTcpRegular" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="infinite" sendTimeout="01:00:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="1000" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="200" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<reliableSession ordered="true" inactivityTimeout="infinite" enabled="false"/>
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
我们在服务中保持状态,因此每个用户都会有自己的对象,每次调用都会获取这些对象。
问题是使用这些设置我们可以拥有多少并发用户(会话)以及哪些设置会影响这一点?