SpringBoot+Netty JT808网关压力测试

SpringBoot+Netty JT808网关压力测试,第1张

上一篇文章我们介绍了如何使用SpringBoot+Netty开发JT808网关,这一篇文章将压力测试JT808网关。

网上看过一些百万级部标网关的文章,没有给出服务器配置,没有给出发送速率,没有给出测试报告,完全就是噱头,我们要保持清醒的头脑,一切以数据说话。

使用模拟终端压测工具,压测工具会发送五种消息:终端注册、终端注销、终端鉴权、心跳、位置汇报。JT808网关接收并解析位置信息后发送到RabbitMQ,gnss-web订阅RabbitMQ的位置消息并统计收到的位置数量。对比压测工具总共发送的位置数量和web收到的位置数量是否一致。

由于交通部的压力检测要求不高,我们不按交通部的要求压测,测试时会将发送速率提高2倍以上,看系统的承压能力达到多少。

服务器:腾讯云和阿里云Linux

配置:CPU:4核 内存:8G 带宽:5M

环境:JDK13,RabbitMQ,Redis,其中RabbitMQ和Redis使用Docker容器创建

测试程序:网关jt808-server、web后台gnss-web

消息序列化:ProtoBuf

模拟压测终端台数:3333、10000、12000

流程:启动docker容器的Redis和RabbitMQ,再启动gnss-web,加载20000台终端的信息到Redis缓存,再启动jt808-server。

RabbitMQ的吞吐量:

服务器负载信息:

web收到的位置数量:2523083

查看JT808网关线程,未发现有BLOCK阻塞线程。

总结:压测时间:40分钟,位置数量:1千万,RabbitMQ吞吐量:5000/s,CPU占用率:75-80%,带宽:3.5M

CPU比以前下降了不少:

JT808网关线程良好,未发现有BLOCK阻塞线程

执行GC垃圾回收后,内存一下子下降了,绿色代表快照前的状态,如果进度条有红色,则表示有内存泄漏。这里全部为绿色,没有出现内存泄漏:

如果数据量非常大,推荐采用数据库直连的方式,如SQL2000等,都以TCP监听形式开放1433端口,你可以通过设置复杂密码、修改端口来减少安全隐患。 如果执意要使用Socket,可以编写专用数据集类型,然后采用数据流分段读取的形式进行分包,在接收方


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7559364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存