【问题标题】:Is it possible to test WCF throttling behaviour through Wcftest client?是否可以通过 Wcftest 客户端测试 WCF 节流行为?
【发布时间】:2014-02-15 04:03:54
【问题描述】:

是否可以通过 Wcftest 客户端测试 WCF 节流行为?

如果是,那么如何?

我在下面有一个 ServiceHost 的代码

 ServiceThrottlingBehavior stb = _servicehost.Description.Behaviors.Find<ServiceThrottlingBehavior>();
        if (stb == null)
        {
            stb = new ServiceThrottlingBehavior();
            stb.MaxConcurrentCalls = 1;
            stb.MaxConcurrentInstances = 1;
            stb.MaxConcurrentSessions = 1;
            _servicehost.Description.Behaviors.Add(stb);
        }

我的服务有一个方法如:

    public string ThrottlingCheck()
    {
        Thread.Sleep(new TimeSpan(0, 0, 0, 5, 0));//5 seconds
        return "Invoke Complete";
    }

【问题讨论】:

    标签: c# .net wcf throttling


    【解决方案1】:

    如果您使用“网络”绑定,您可以使用开源的soapUI/loadUI 测试工具。

    SoapUI 是一个免费的开源跨平台功能测试解决方案。凭借易于使用的图形界面和企业级功能,SoapUI 允许您轻松快速地创建和执行自动化功能、回归、合规性和负载测试。

    参考:
    http://www.soapui.org/
    http://www.soapui.org/Load-Testing/using-loadui-for-loadtesting.html

    【讨论】:

      【解决方案2】:

      由于您的请求需要 5 秒,因此您可以通过使用两个 WCF 测试客户端或在同一个 WCF 客户端中打开两个选项卡同时调用两个操作来轻松地对此进行测试。

      集成测试无疑是检查这种行为的更好选择。

      此外,如果您想检查该行为是否真正应用于您的服务,您可以使用 WCF 诊断程序,例如 WCF 计数器,尤其是“Percent of Max Concurrent XXX”。

      【讨论】:

      • 打开两个选项卡永远不会起作用,但是 wcftestclient 的不同实例肯定会起作用
      【解决方案3】:

      不,不能使用 WCF 测试客户端。如果您有 Visual Studio Ultimate,则可以使用负载测试/性能测试来测试限制。

      http://blogs.msdn.com/b/rickrain/archive/2009/06/26/wcf-instancing-concurrency-and-throttling-part-3.aspx?Redirected=true

      【讨论】:

        【解决方案4】:

        如果您的公司拥有 LoadRunner(hp 产品)的副本,您将能够建立足够多的虚假事务来实际测试节流。

        在我们的例子中,我们实际上构建了一个多实例、多线程的程序来使用 1000 多个并发(假)用户来攻击我们的 Web 服务,每个用户上传 40 个文件。直到那时我们才能看到节流开始生效。

        顺便说一句,我们尝试了一堆不同的组合,看看我们是否可以调整设置并提高性能,但最终,我们能够让我们的 Web 服务运行的最快速度是在默认的节流设置下...... . 换句话说,根本没有节流,只是让 WCF 管理流量和队列。很奇怪吧?

        【讨论】:

        • 不限流是指默认限流吗?
        • 默认是不应用限制。换句话说,开箱即用,WCF 实现中没有使用限制。
        • 但是如果你不应用任何限制 WCF 有defaults
        • 也许......我不确定它们是什么。他们的行为我们看到,如果您启动 1000 个并发请求,Web 服务将尝试处理大约 150 个,其余的将由 Web 服务排队。所以也许那里有一个默认值。
        • 我在之前的评论中链接到了默认值。还有一个线程 bug in .NET 4 会影响 WCF 性能并在 4.5 中修复。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 2012-06-02
        • 2015-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多