面对如下问题同时发送100个请求服务器开始放慢通过新查询,前100个请求触发一个函数执行1分钟等待执行结束,101个请求我发送来自浏览器函数的简短调用,该函数打印字符串和仍在并行运行的请求数量。
因此,在所有 100 个请求开始在流中工作之后,101 函数很快并显示 100 个线程现在并行运行。
在网上看了很多资料,一切似乎都应该做的,但仍然没有结果
使用 NF 4.5
类属性设置为在 C# 代码中并行工作
[CallbackBehavior(UseSynchronizationContext = false)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = 2147483646)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceContract(SessionMode = SessionMode.NotAllowed)]
函数仿真加载 1 分钟 C# 代码
私有静态int线程11 = 0;
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
public string loadConcurency()
{
threads11++;
var count = 0;
while (count < 6000)
{
count++;
Thread.Sleep(10);
}
threads11--;
return "1";
}
函数测试统计 C# 代码
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Json)]
public string ReportTest()
{
try
{
StringBuilder response = new StringBuilder().AppendLine("threads=" + threads11.ToString() + "; ");
response.AppendLine();
return response.ToString();
}
catch (Exception ex)
{
return ex.ToString() + (ex.InnerException == null ? "" : ex.InnerException.ToString());
}
}
serviceThrottling 设置得很高
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentCalls="3000" maxConcurrentSessions="30000" maxConcurrentInstances="3000" />
</behavior>
我希望那些遇到这种问题的人会提示问题是什么,或者至少给出建议还有什么地方可以挖掘