上一篇文章我们介绍了如何使用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
流程:启动docker容器的Redis和RabbitMQ,再启动gnss-web,加载20000台终端的信息到Redis缓存,再启动jt808-server。
1.首先我们先压测RabbitMQ的收发性能,吞吐量每秒可以达到2W+
2.压测3333台终端
RabbitMQ的吞吐量:
服务器负载信息:
压测工具发送的位置数量:2523083
web收到的位置数量:2523083
web收到的位置信息:
总结:压测时间:40分钟,位置数量:2523083,RabbitMQ吞吐量:3000+/s,CPU占用率:35-40%,带宽:1.5M
3.压测10000台终端
查看JT808网关线程,未发现有BLOCK阻塞线程。
总结:压测时间:40分钟,位置数量:1千万,RabbitMQ吞吐量:5000/s,CPU占用率:75-80%,带宽:3.5M
后续会继续优化性能,让CPU占用率再低一些。