概述
ThingsKit已被众多公司以单体和微服务部署模式运行在生产环境中。本文主要介绍一下Thingskit以单体模式,部署在阿里云ECS服务器上,模拟5K台设备接入平台的性能情况。
设备数 | 每秒数据点数 | 实例类型 | 队列类型 | 数据库 | CPU使用率 | 写入IOPS |
5K | 15K | Aliyun_ecs.c6、4 核(vCPU)、8GB RAM | 内存 | PostgreSQL+TimesscaleDB | 70% | 850 |
测试目标
在线5K台设备,每台设备消息包含3个数据点,即每秒上报消息1.5万点,持续运行24小时,服务器平均CPU不超过70%,平均内存不超过70%。
测试版本
Thingskit 物联网基础平台 v1.1.1
测试环境
测试环境(使用阿里云ECS部署) | ||
阿里云服务器 | 数量 | 1 |
实例规格族 | ecs.c6 | |
CPU | 4核(vCPU) | |
内存 | 8GB | |
操作系统 | Ubuntu 22 64位 | |
软件应用 | Thingskit |
阿里云ECS配置截图:
测试场景
- 5000台设备;
- 单体部署;
- 通过MQTT每秒5000条消息,每条MQTT消息包含3个数据点,每秒产生15000个数据点;
- PostgreSQL数据库;
- TimescaleDB时序插件。
测试方法
在阿里云单个ECS实例上部署了单体ThingsKit实例以及所有相关的第三方组件。通过模拟器,模拟5000台设备连接并上报数据,通过模拟器不断用MQTT发布时间序列数据。
本次测试,模拟平台管理智能电表设备,以JSON数据格式发送消息,其中包含三个数据点:脉冲计数器、泄漏标识和电池电量。每个设备都使用单独的MQTT连接到服务器。ThingsKit物联网平台将所有时间序列数据存储在数据库中。
测试过程记录
5K设备连接及数据观察
ThingsKit平台截图,动态数据实时展示截图:
Java VisualVM实时监控截图
Java VisualVM实时监控截图【包含:堆、类、线程】
pgAdmin实时监控截图
pgAdmin实时监控截图【包含:每秒事务、服务器会话、元组输入、元组输出、数据块I/O】
阿里云资源实时监控截图
测试结果,阿里云,服务器CPU、内存、磁盘读写等运行情况
Shell查看服务器实时监控截图
运行21小时,Java VisualVM监控截图
Java VisualVM监控截图【包含:堆、类、线程】
运行21小时,平台监控截图
运行24小时,阿里云资源监控截图
数据存储磁盘资源使用情况
每秒5000台设备x3个数据点x24小时:
- 一台设备/秒:1台设备1个数据点1秒综合数据约占0.18KB【1台、1秒】;
- 5K设备/小时:5000台设备3个数据点,在运行1小时后,综合数据所占磁盘9.37GB;
- 5K设备/天:5000台运行1天时间(24小时)大约224.9GB。
测试结论
据上述测试过程监控分析得出测试结论:在该测试环境下运行,平台支持5K设备同时在线和1.5W每秒的数据并发,系统资源消耗和平台运行状态一切正常。
💡 提示:
本次测试考虑到生产环境的异构性和复杂性,测试指标并未设计为极限测试指标,理论上5K设备和1.5W的数据并发还可以提高。