WCF EF 6.0,.Net 4.5,SQL Server 2008 R2。
这是我的服务所做的事情: 1.致电ServiceA,ServiceB进行验证。 2.致电图书馆A. 3. LibraryA执行选择然后插入 4.服务调用LibraryB 5. LibraryB执行插入 6.服务执行插入
现在所有这些都是在同一个事务管理器内完成的[ReadUncommitted]我传递了DBContext。
一切都很好。平均响应时间约为600毫秒。现在,如果我引入一些并发性,我会在大约1500次调用后开始看到超时。
我使用我的客户端中的parallel.ForEach来模拟并发,使用来自数组的不同数据调用服务2000次。它工作到大约1500次呼叫,之后我收到服务频道超时[00:00:59]秒错误。但我在数据库中看到插入,这意味着服务正在完成工作,但客户端正在接收超时。
我的服务中有以下设置:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)]
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000"/>
<binding name="basicHttpBinding_None" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="429496729" maxBufferPoolSize="2147483647" maxReceivedMessageSize="429496729" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
我确实在这里和其他地方阅读了几个主题,尝试将我的传输模式设置为&#39; Streamed&#39;,没有任何效果。
请协助。