【问题标题】:Load test WebClient server负载测试 WebClient 服务器
【发布时间】:2016-05-27 17:31:20
【问题描述】:

我是一名没有负载测试经验的开发人员,想学习如何做到这一点。

我有一个简单的客户端服务器应用程序,客户端向服务器发送请求,服务器返回响应。

我想对此进行负载测试,但我不确定如何执行此操作。这是我的 GetResponse 方法,它接收来自服务器的响应。

    Response GetResponse(Request request)
    {
        string data = Newtonsoft.Json.JsonConvert.SerializeObject(request);

        System.Net.WebClient wb = new System.Net.WebClient();
        string response = wb.UploadString("http://localhost:8080", data);

        return Newtonsoft.Json.JsonConvert.DeserializeObject<Response>(response);
    }

我最初的想法是编写一个例程来同时发送大量的获取响应请求,然后尝试监控 CPU 滴答声或其他以查看它的执行情况。

谁能告诉我这是否是正确的方法?我也不确定要收集的最佳统计数据是什么?

提前致谢

编辑....

Whist 等待答案我已经编写了以下内容,它添加了一个新线程并根据需要处理请求。请您评论一下这是否足以了解我需要什么或者我是否需要一个合适的负载测试工具?

        DateTime startTime;
        DateTime endTime;

        Console.WriteLine("Test how many concurrent users?");
        string users = Console.ReadLine();

        int usersCount;

        if (int.TryParse(users, out usersCount) && usersCount > 0)
        {
            startTime = DateTime.Now;
            _countDown = new CountdownEvent(usersCount);

            for (var i = 0; i < usersCount; i++)
            {
                string userName = string.Format("user{0}", i);
                Task.Factory.StartNew(() => TestRun(userName));
            }

            _countDown.Wait();

            endTime = DateTime.Now;

            Console.WriteLine("All tasks are completed!");
            Console.WriteLine(string.Format("Av time(ms) per user: {0}", (endTime - startTime).TotalMilliseconds / usersCount));
        }

        Console.WriteLine("Press any key to exit");
        Console.ReadKey();
    }

    public static void TestRun(object userName)
    {
        Thread newThread = new Thread(DoWork);
        newThread.Start(userName);
    }

    public static void DoWork(object userName)
    {
        LoadTest.Test(userName.ToString());
        _countDown.Signal();
    }

【问题讨论】:

    标签: c# performance testing webclient load-testing


    【解决方案1】:
    1. 首先您需要一个负载测试工具。如果您的 Visual Studio 许可证允许,最直接的选择是使用MS VS Load Testing Framework。如果您没有 Web 和负载测试类型 - 有许多 free and open source load testing tools
    2. 创建测试本身。作为开发人员,您应该知道如何构造 HTTP 请求。如果没有 - 大多数负载测试工具都提供记录和回放功能。
    3. 一旦您开始进行负载测试,您就可以开始增加虚拟用户的数量并密切关注相关的指标和 KPI,即:

      • 并发用户数与响应时间
      • 并发用户数与吞吐量
      • 每秒事务数
      • 每秒服务器点击次数
      • 响应时间:

      • 您的应用程序能够在不出错且响应时间合理的情况下每秒处理的最大并发用户/请求数是多少

      • 如果应用程序过载并且没有响应,它是否会在负载减少时返回正常运行模式
    4. 分析上述指标,您可以:

      • 确定应用程序的最大性能和容量
      • 找出瓶颈并尽可能解决它

    【讨论】:

    • 感谢您的回复...当我在等待回复时,我尝试编写一个程序来运行一些并发请求(见上文)...这是可以测试的吗?加载?还是我总是需要像你说的那样合适的测试工具。我只有 express vs 所以不会安装他们的工具。
    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多