请求通道在等待回复时超时
我有一个小应用程序,它使用WCF与Web服务器通信。 该程序由大约200个客户端使用,每个客户端以大约5-20个请求/分钟发送。
查看错误日志我经常得到:
在00:00:59.9989999之后等待回复时,请求通道超时
请求如下:
ClientService Client = new ClientService(); Client.Open(); Client.updateOnline(userID); Client.Close();
这是app.config
在“多次通话”中,每天约200-800人失败。 约n-1是好的。 我很困惑这个问题是什么。 查看服务器统计信息,它几乎没有出汗 – 每个请求都需要<2秒才能处理。 它发送的数据包括“int”或“非常小的字符串” – 所以,它不是由于大小,如果是 – 应该有一致的失败..
建议?
您的请求似乎在处理之前在服务器上排队,然后开始超时。 你可以在这里尝试几件事来看看到底发生了什么
1)尝试在WCF服务中进行限制,例如:尝试增加并发会话。 看一看WCF Throttling
2)尝试使用PerCall而不是使用Sessions来确保没有会话。 您可以在界面上执行以下操作来删除会话
[ServiceContract(Namespace="YOUR NAMESPACE", SessionMode=SessionMode.NotAllowed)]
和您的合同类实现这些接口
ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
AND ….您应该启用跟踪以查看到底发生了什么。
尝试将超时值添加到服务和客户端:
检查此性能计数器 – ASP.NET Requests Queued
。
一个Web应用程序可以托管许多Web页面和服务。 默认情况下,IIS每个CPU核心仅处理12个并发请求。
这意味着即使您的服务很快但其他页面/服务很慢,您的请求也必须在执行之前等待队列。
ASP.NET Requests Queued
应该为零或接近于零。
请参阅MSDN上的ASP.NET性能计数器 。
上述就是C#学习教程:请求通道在等待回复时超时分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027532.html