WCF。客户端超时异常。的SendTimeout。负载测试显示奇怪的数字。为什么?

时间:2013-02-19 18:23:29

标签: .net wcf

服务

我在高负载下有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);
    }
}

以下时间超时消失:

  1. 我增加了sendTimeout。
  2. 我创建了一个频道并在其中重复使用 整个负载测试。
  3. 现在奇怪的东西:

    负载测试(即使有超时)显示测试时间平均为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大师?

0 个答案:

没有答案