<img width="100%" src="https://www.dgiotcloud.cn/wp-content/uploads/2022081106113842.png" >

[小 迪 导读]:在软件运行时,设施一直减少,软件内信息量一直晋升,程序压力一直减少,程序的承受能力至关重要。

dgiot计划其余计划
利用ZETAAP影子设施模仿1万ZETAAP、千万ZETATAG同时在应用程序中工作我的项目实际测试软件承受能力

1概述

1.1测试背景

随着ZETA产业的倒退与业务的深入利用,设施治理、网络管理、应用服务都面临大规模设施接入挑战。ZETA设施接入服务必须可能反对高并发性 (如超过百万级的并发设施接入)、高速率 (如每秒超过十万事件)、高吞吐量 (如每100秒解决超过GB)。同时,利用事件发生率各不相同,须要接入服务有超强的解决能力,保障利用事件的失常解析。

1.2测试简介

压力测试是软件质量保证的一项根本行为,是每个重要软件测试工作的一部分。软件压力测试是指对系统一直施加压力的状况下,依据零碎各项指标的变动状况来判断:1、零碎可能存在的瓶颈;2、零碎负载能力;3、零碎失常运行状况下的运行效率。

<img width="100%" src="https://www.dgiotcloud.cn/wp-content/uploads/2022081104381249.png" >

图1-理论业务场景

本次压力测试通过模仿1万ZETA AP、千万ZETA TAG标签的在线运行,精准高效实现ZETA AP、ZETA TAG的在线协定解析、解析数据实时入库、海量数据在线查问与展现等流程。同时,对实在物流业务场景进行形象,实现批次ZETA TAG在不同线路上产生轨迹扭转,挪动过程中利用不同的ZETA AP实现定位。ZETA TAG在线运行过程中,每隔15分钟发送心跳包,被邻近的单个或者多个ZETA AP报送至服务端。服务端会依照策略抉择信号最好的上报数进行存库,并利用上报信号最好的AP对ZETA TAG进行定位。

1.3目标

通过压力测试,判断以后应用环境状况下零碎的负载能力,为今后利用范畴扩充,用户量回升后,服务器扩容、降级等提供必要的技术撑持,及服务器布局等。

本次测试目标是为了验证基于dgiot连贯与设施治理平台的ZETA物流跟踪治理可能实现千万级ZETA TAG标签同时在线稳固运行、数据及时回传、失常入库、高效查库。

本次测试场景的压力与复杂度远高于实在场景,在保障ZETA物流跟踪以后业务能够失常发展的同时,也能够无效撑持ZETA相干业务利用的拓展与深入利用。

2测试环境

2.1网络

为了尽量避免网络传输给测试后果带来的影响,应该选取外部局域网作为压力测试的网络环境(然而咱们没有专门的局域网,只能用外网测试)。网络框图如下:

图2-网络结构示意图

2.2腾讯云服务器

平台服务器即连贯与设施治理平台服务器,是压力测试的次要对象。平台服务器为目前正式环境中运行的服务器,应用服务器配置不同,其压力测试后果也不统一。

服务器配置如下:

服务器类型腾讯云服务器
处理器16外围CPU 2.0GHz
内存32G
硬盘500G
操作系统LINUX centos7.3 64位

2.3应用服务器

服务器配置如下:

服务器类型腾讯云服务器
处理器2外围CPU 2.0GHz
内存4G
硬盘50G
操作系统LINUX centos7.3 64位

2.4测试机

因为压力测试是对系统负载能力的测试,无奈通过真是的环境来进行获取相干指标,因而通过测试机与测试服务,模仿1万AP、千万ZETATAG与服务器高频数据交互,利用算法虚构实在业务场景下理论的操作来进行测试。

测试机部署虚构云设施服务,及进行压力测试的客户端机器,个别采纳高配置的机器来进行测试。

在压力测试过程中,个别疏忽测试机对压力测试后果的影响。

测试机配置(腾讯云服务器):

服务器类型腾讯云服务器
处理器4外围CPU 2.0GHz
内存8G
硬盘200G
操作系统LINUX centos7.3 64位

2.5条件与限度

为了尽量保障压力测试后果的真实性,在压力测试期间,做如下的条件限度:

1、尽量在局域网内进行压力测试,防止因网络起因干扰测试后果与论断;

2、数据库服务器除了解决测试利用零碎申请外,不进行其它简单利用申请;

3、测试应用服务器不进行其它的失常业务解决,因而压力测试安顿在非工作日进行;

4、压力测试后果疏忽测试机、应用服务器、网络等其它额定的开销,不作为零碎瓶颈的剖析对象。

2.6测试场景

启动测试机,导入已编写好的服务,设置线路条数、起始地位、发送频率、AP数量、TAG取值范畴、等参数信息,便能够启动模仿场景,进行AP、TAG与服务器的高频数据交互。

3测试工具

3.1测试工具

测试工具:虚构AP;监控工具:Grafana

3.2工具简介

利用ZETAAP影子设施模仿1万ZETAAP、千万ZETATAG同时在应用程序中工作的环境,对应用程序进行负载测试。当应用程序在负载状态下运行时,Grafana会精确评测、监控并剖析零碎的性能和性能。

ZETAAP影子设施应用TCP/IP协定,次要思维是应用虚构设施来模仿实在设施并发对系统施加压力。通过ZETAAP影子设施模仿接管ZETATAG标签上报数据,将上报数据上报至服务端。

4测试场景与指标

ZETAAP、ZETATAG设施音讯收发是平台功能模块中实现数据网关性能,同时服务器须要进行简单运算的查问、计算。但也是零碎中根本的模块,操作量绝对较大,性能的要求较高,对服务的压力绝对较大。

<img width="100%" src="https://www.dgiotcloud.cn/wp-content/uploads/202208110439313.png" >

ZETA物流跟踪业务场景图

ZETA设施运行模仿:

ZETA AP:每10s被动连贯服务端,间断30min未连上期待2min再次 连贯;

连贯状态下1min一次心跳交互;

间断三次未收到ACK,发动重连。

ZETA TAG:每15分钟上报一次心跳包;

心跳报文被不同AP接管上报后,服务端会比拟后保留首次

收到TAG心跳后3s内RSSI最强上报的AP地位信息作为TAG的以后地位。

客户端场景模仿形容:

运输、配送线路:本次场景模仿线路总计200条,线路能够配置。

运输车辆:本次场景模仿运输车辆50000部,货车会模仿实在物流场景在既定线路上进行挪动,车上ZETAG标签随之挪动。

ZETA AP:本次模仿10000台,每条线路上散布500台ZETAAP

ZETA TAG数量:本次模仿在运ZETAG1000万个,ZETAG随运输车辆挪动,每隔15分钟的心跳报文被相邻的2-3个ZETAAP接管。

服务端业务形容:

1、每15分钟内实现千万在运ZETAG标签心跳数据包解析(加上冗余报文,每15分钟内解析心跳报文数量2000多万条);

2、实现ZETA TAG心跳数据比拟与冗余数据过滤;

3、实现解析出的海量TAG地位信息实时分类入库;

4、反对ZETATAG最新地位更新与轨迹查问;

5、每分钟实现1万ZETAAP的心跳报文解析、存储;

6、实现ZETAAP运行状态信息的接管与存储;

7、反对ZETA AP运行状态信息查问。

依据测试零碎中音讯的业务场景状况,选取以下指标作为场景压力测试状况判断根据:

A、ZETA AP在线状况统计

B、ZETA AP在线率

C、在线ZETAG标签数量

D、ZETA标签解析包数量

E、1/5/15分钟CPU均匀负载

F、内存使用量

5测试策略

5.1测试筹备

依照本测试计划及测试计划,筹备测试数据,实现服务部署,并在模仿环境中进行测试运行。

5.2压力测试

压力测试分以下几种状况测试:

测试内容测试项阐明
A、ZETA AP在线状况统计统计同时在线的ZETAAP数量
B、ZETA AP在线率在线ZETAAP与模仿总量的比值
C、在线ZETAG标签数量统计心跳周期内ZETAG在线数量
D、ZETA标签解析包数量平台实现的ZETA标签解析数量
E、1/5/15分钟CPU均匀负载平台服务器的CPU负载信息
F、内存使用量平台服务器的内存使用量

压力测试过程中须要记录的性能指标包含:

测试环境指标
平台指标最大AP在线数 ZETAG标签并发数 最小响应工夫 最大响应工夫 均匀响应工夫
被测服务器CPU最小 均匀 最大
被测服务器内存耗费最小值 最大值 平均值

6测试后果

6.1测试后果数据与剖析图表

ZETAG标签数据包入库总量(入库超10亿条):

ZETA AP在线数量:

ZETAG标签在线数量统计(15分钟最高超过1856万):

ZETAG标签解析数量:(两小时内约解析1.5亿条)

1/5/15分钟CPU负载统计:(负载比拟安稳)

内存使用量:(客户端最高7.19G,服务端最高29.6G)

磁盘读写测试:

API 压力测试后果:

ZetaEtag 接口

超时工夫为5秒

随机读tag,数据库内数据58169933条

tag 生成形式:FF结尾后六位随机生成

申请次数/次200000
测试总工夫/秒269.583
返回200数120116 / 200000
返回404数79884 / 200000
返回其余状态码0 / 200000
返回成功率/ %100
每秒申请数/ 次/秒741.88

* 返回status code为200(找到指标tag)或404(找不到指标tag)两者都视为调用胜利

服务器CPU负载

服务器内存负载

ZetaEtagHistory 接口

超时工夫为5秒

对所有tag随机读,limit值为100,日期范畴在正当范畴内随机产生,数据库内数据58169933条

tag生成形式:FF结尾后六位随机生成

日期生成形式:1569558137~1569579737间随机数

申请次数/次200000
测试总工夫/秒298.123
返回200数200000 / 200000
返回其余状态码0 / 200000
返回成功率/ %100
每秒申请数/ 次/秒670.86

服务器CPU负载

服务器内存负载

6.2测试后果剖析

依据以上测试后果可得出以下论断:

测试内容测试后果(取值范畴)
A、ZETA AP在线状况统计9960-20000
B、ZETA AP在线率100%
C、在线ZETAG标签数量最大值:18562926
D、ZETA标签解析包数量共计:1010505054
E、1/5/15分钟CPU均匀负载1分钟 :0.11-15.85分钟:0.78-13.915分钟:5.8-11.65
F、内存使用量服务端:12.46G(均匀)客户端:2.90G(均匀)

经剖析能够得出以下论断:

1、15分钟内超过千万个(1020万)的TAG标签实现了心跳数据包上报、解析、存储;

2、服务运行稳固,内存使用量与CPU负载均在安稳状态;

以后存在问题

综上所述,平台能够稳固撑持千万级ZETA TAG同时在运的物流跟踪网络经营与业务利用。通过优化策略与扩容能够撑持更大规模、更多畛域的ZETA利用。

[小 迪 点评]

  • dgiot测试场景的压力与复杂度远高于实在场景,保障ZETA物流跟踪以后业务能够失常发展。
  • dgiot压力测试还能无效撑持ZETA相干业务利用的拓展与深入利用。

想理解更多 dgiot 的具体细节,欢送大家在GitHub上查看相干源代码。