上一篇文章我們介紹了如何使用SpringBoot+Netty開發(fā)JT808網關,這一篇文章將壓力測試JT808網關。
網上看過一些百萬級部標網關的文章,沒有給出服務器配置,沒有給出發(fā)送速率,沒有給出測試報告,完全就是噱頭,我們要保持清醒的頭腦,一切以數(shù)據(jù)說話。
使用模擬終端壓測工具,壓測工具會發(fā)送五種消息:終端注冊、終端注銷、終端鑒權、心跳、位置匯報。JT808網關接收并解析位置信息后發(fā)送到RabbitMQ,gnss-web訂閱RabbitMQ的位置消息并統(tǒng)計收到的位置數(shù)量。對比壓測工具總共發(fā)送的位置數(shù)量和web收到的位置數(shù)量是否一致。
由于交通部的壓力檢測要求不高,我們不按交通部的要求壓測,測試時會將發(fā)送速率提高2倍以上,看系統(tǒng)的承壓能力達到多少。
服務器:騰訊云和阿里云Linux
配置:CPU:4核 內存:8G 帶寬:5M
環(huán)境:JDK13,RabbitMQ,Redis,其中RabbitMQ和Redis使用Docker容器創(chuàng)建
測試程序:網關jt808-server、web后臺gnss-web
消息序列化:ProtoBuf
模擬壓測終端臺數(shù):3333、10000、12000
流程:啟動docker容器的Redis和RabbitMQ,再啟動gnss-web,加載20000臺終端的信息到Redis緩存,再啟動jt808-server。
1.首先我們先壓測RabbitMQ的收發(fā)性能,吞吐量每秒可以達到2W+
2.壓測3333臺終端
RabbitMQ的吞吐量:
服務器負載信息:
壓測工具發(fā)送的位置數(shù)量:2523083
web收到的位置數(shù)量:2523083
web收到的位置信息:
總結:壓測時間:40分鐘,位置數(shù)量:2523083,RabbitMQ吞吐量:3000+/s,CPU占用率:35-40%,帶寬:1.5M
3.壓測10000臺終端
查看JT808網關線程,未發(fā)現(xiàn)有BLOCK阻塞線程。
總結:壓測時間:40分鐘,位置數(shù)量:1千萬,RabbitMQ吞吐量:5000/s,CPU占用率:75-80%,帶寬:3.5M
3.優(yōu)化了性能后壓測12000臺終端
CPU比以前下降了不少:
JT808網關線程良好,未發(fā)現(xiàn)有BLOCK阻塞線程
停掉壓力測試后我們檢查一下會不會有內存泄漏,這是GC前的狀態(tài):
執(zhí)行GC垃圾回收后,內存一下子下降了,綠色代表快照前的狀態(tài),如果進度條有紅色,則表示有內存泄漏。這里全部為綠色,沒有出現(xiàn)內存泄漏: