服务
我在高负载下有WCF服务。响应时间平均为~60 ms。 除了maxConcurrentCalls =“5000”之外,服务主要使用默认配置,暴露了带有basicHttpBinding的端点。
客户端
另一项服务(进一步“客户”)正在消耗这一项。不经常(如0.5%)有TimeoutExceptions(*)。客户端上的sendTimeout设置为“00:00:05”。
加载测试
我可以使用VS Load Testing重现相同的内容:
[TestMethod]
public void Test()
{
using (var client = new SomeServiceClient())
{
// some randomization to make request more realistic
var response = client.GetSomething(request);
}
}
以下时间超时消失:
现在奇怪的东西:
负载测试(即使有超时)显示测试时间平均为0.06,最多为0.2秒,远远低于5秒。 这也发生在生产中(日志说的是这样),但到目前为止还没有发现客户影响。
问题
有人知道可能出现什么问题吗?
或者:在WCF配置/实例化/等方面,您对此方案有什么建议?
在可伸缩性方面,所有这些东西已经在许多主机上运行:4台主机上的客户端,4台主机上的服务器。会增加客户数量吗?
(*)当我提到TimeoutExceptions时,我总是指客户端异常。
System.TimeoutException:请求通道在00:00:05之后等待回复时超时。增加传递给Request的调用的超时值或增加Binding上的SendTimeout值。分配给此操作的时间可能是较长超时的一部分。 ---> System.TimeoutException:对“http://someservice.intranet/99.99/someendpoint.svc”的HTTP请求已超过分配的超时00:00:05。分配给此操作的时间可能是较长超时的一部分。 ---> System.Net.WebException:操作已超时
任何愿意提供帮助的WCF大师?