【BeetleX重构】基础HTTP协议性能测试(目标百万RPS)

        通讯组件最能反映真实性能还是需要实现一个相应的应用来进行测试,并由第三方工具提供结果,只有这样做测出来的结果才更具客观性。使用BeetleX实现一个简单的通过用的HTTP服务也是非常简单的事情,协议分析大概几百行代码的工作量,然后再抽取出Request和Response结构方便使用即可,具体实现可以从以下地址获取
//github.com/beetlex-io/BeetleX.Light/blob/main/Samples/BaseHttpPerformance.cs

        本次测试的用例也比较简单,根据请求给测试端响应相应数量的Json对象,这种场景应该在webapi中是比较常见的一种情况了。具体代码如下:

public class HttpSession : SesionBase
{
    public override void Receive(NetContext context, object message)
    {
        var request = (HttpRequest)message;
        if (!int.TryParse(request.QueryString, out var count))
        {
            count = 1;
        }
        HttpResponse response = new HttpResponse();
        List<object> data = new List<object>();
        for (int i = 0; i < count; i++)
        {
            data.Add(new { Text = "Hello World", Time = DateTime.Now });
        }
        response.SetJson(data);
        context.Send(response);
    }
}

测试工具则使用开源的wrk,这工具也是TechEmpower网站用来压测各大web框架的压测工具。测试环境还是使用A家云32核抢占式云服务器,web服务器使用windows2019(也许有人问为什么不用linux?其实是为了方便...),测试端用Ubuntu.

测试用例:分别是响应1,10,50和100个对象列表。

测试结果如下:

1bff174465fc6b6fdccd4ab5a5cb405d.png

返回一条记录用例测试结果达到了110W RPS!响应的100条的测试结果是32W RPS输出带宽已经达到16Gb了。所有测试用例的CPU基本都跑爆了,从结果可以看到JSON序列化也是非常损耗CPU资源了。

c23b6b36df438534efb779887b643ba4.png

通过上面的图能猜到A家云的母鸡配置吗?wrk当前跑着百万RPS请求测试.(由于云主机分配的资源可能存在差异,同样配置的云主机性上也可能有差异)

测试结果比较满足,后续会针对Json,Protobuf和MessagePacket的Http body响应做一个对比。

下面推荐两款高性能的HTTP测试组件,使用起来都是非常方便!

//github.com/wg/wrk (只支持linux,c编写)

//github.com/codesenberg/bombardier (支持linux/win, go编写)

BeetleX

开源跨平台通讯框架(支持TLS)

提供HTTP,Websocket,MQTT,Redis,RPC和服务网关开源组件

个人微信:henryfan128    QQ:28304340

关注公众号

8a92dbb6fa4bc16aeedb59f0a5848d78.jpeg

https://github.com/beetlex-io/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k6 是一款开源的负载测试工具,用于对网站、应用程序和后端 API 进行性能测试。在进行 k6 性能测试时,我们可以通过设置不同的参数来实现不同的测试目标和需求。 1. 虚拟用户数量(VUs): k6 允许我们根据需要模拟不同数量的虚拟用户,并发地执行测试脚本。根据被测试应用程序的预期负载,我们可以设置虚拟用户数来模拟实际使用情况。 2. 请求频率(rps): 通过设置每秒钟发送的请求数,我们可以模拟用户在一段时间内对应用程序的访问频率。可以根据实际需要调整请求频率,以测试应用程序在不同负载下的性能表现。 3. 测试持续时间: 我们可以设置测试的持续时间,即在一段时间内执行测试脚本。测试持续时间取决于所需的测试精度和测试目标。较短的持续时间可能适用于初步评估性能问题,而较长的持续时间则更适合进行长时间负载测试。 4. 结果输出: k6 提供了多种结果输出选项,例如将结果保存到本地文件、生成 CSV 或 JSON 格式的报告,或将结果发送到云平台进行集中存储和分析等。通过设置适当的结果输出参数,我们可以方便地获取测试结果以便分析和评估性能。 总结来说,通过调整虚拟用户数量、请求频率、测试持续时间和结果输出等参数,我们可以根据测试需求对应用程序进行性能测试,并得出相应的结果分析,以帮助开发人员优化应用程序的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值