产品性能
本产品支持两种数据存储方案,一种是把数据存储在SQLite、Leveldb
中,另一种是把数据存储在MySQL、TDengine
种。本章节对两种存储形式做性能测试。
测试前准备
- 1台2c4g虚拟机。
- 在平创建一个产品,并且批量导入4000个设备。
- 编写测试驱动。
驱动伪代码实现。
go
func (sd *SimpleDriver) reportDeviceData(d model.Device) {
for {
//休眠1s
time.Sleep(1 * time.Second)
_, _ = sd.DriverSdk.BatchReport(d.Id, model.NewBatchReport(false,
model.BatchData{
Properties: map[string]model.BatchProperty{
"electric_fr": {Value: RandomNum()},
"electric_fra": {Value: RandomNum()},
"electric_frb": {Value: RandomNum()},
"electric_frc": {Value: RandomNum()},
"electric_pfa": {Value: RandomNum()},
"electric_pfb": {Value: RandomNum()},
"electric_pfc": {Value: RandomNum()},
"electric_pqa": {Value: RandomNum()},
"electric_pqb": {Value: RandomNum()},
"electric_pqc": {Value: RandomNum()},
},
}))
}
}
func (sd *SimpleDriver) Initialize() error {
devices := sd.DriverSdk.GetDeviceList()
for _, device := range devices {
d := device
//并发上报
go sd.reportDeviceData(d)
}
return nil
}
让我们把设备数量提升至8000个,并且把实例升级到4c8g,我们再来看一下产品性能表现。
可以从图片看到当设备为8000时,使用4c8g的机器,过去1个小时CPU的平均使用率为百分之60,内存平均使用率仅仅为百分之16!
推荐配置
平台根据接入设备数量不同,机器配置也应该做相应调整,下面给出对照表供大家参考。
设备数量 | 0<设备数<=5000 | 5000<设备数<=10000 | 设备数 > 10000 |
---|---|---|---|
推荐机器配置 | 2c4g | 4c8g | 根据情况调整或联系官方解决 |
磁盘 | 100G ssd磁盘 | 200G ssd磁盘 | 根据情况调整或联系官方解决 |