关于IOT场景的终端agent及server压测

1、终端agent性能测试一般要关注到哪些指标?这2套实现方式分别要怎么进行性能测试(该agent设计了2套:一套是基于go的,一套是基于rust的)
2、该场景下需要对server进行十万级/百万级长链接压测,在环境准备(软件/硬件环境/网络配置等)、终端设备模拟、以及压测脚本实现这块要怎么设计呢?

终端agent性能测试需要关注以下指标:
CPU和内存的使用情况
网络带宽和延迟
响应时间和吞吐量
并发连接数和并发请求数
错误率和异常处理能力

对于基于go和rust实现的agent,可以采用以下方法进行性能测试:
基于负载测试工具(如JMeter、Locust等)对agent进行压力测试,控制并发连接数和并发请求数,观察响应时间和吞吐量等指标变化。
使用基准测试工具(如Go的benchamrk)对go和rust实现的agent进行性能测试比较,观察CPU和内存的使用情况等指标变化。

在进行十万级/百万级长链接压测时,需要考虑以下环节:
环境准备:需要模拟真实的网络环境和终端设备,搭建测试环境并进行配置和调优。
终端设备模拟:可以使用模拟器或虚拟机等工具模拟终端设备,模拟终端设备的请求和响应,观察并发连接数和并发请求数等指标变化。
压力测试工具:可以使用开源的负载测试工具(如JMeter、Locust等)或者商业压力测试工具(如LoadRunner、WebLOAD等)进行测试,控制并发连接数和并发请求数,观察响应时间和吞吐量等指标变化。

同时,还需要注意以下事项:
测试数据的准备和管理:需要准备测试数据,并对测试数据进行管理和监控,确保测试数据的准确性和一致性。

测试结果的分析和报告:需要对测试结果进行分析和报告,及时发现问题并进行优化和调整。

感谢老师的回复!在这里有几点疑问想要邀请老师再深入讲解下:
在进行十万级/百万级长链接压测的环境准备及设备:
1、由于我们目前真实的终端设备环境及设备类型都比较杂,设备类型操作系统及配置等都是各不相同的,有算力很低的工业设备也有配置不错的物联网设备;有的是在网络配置不错的实验环境,有的是在网络很差的野生环境;那么,在做这个环境及设备模拟的时候要选取一个什么样的标准比较合适呢?
2、关于终端设备模拟器或者虚拟机的选择上,老师有什么好的推荐呢?因为本次性能可能需要基于十万、百万设备来进行模拟,后期也许会要做到千万级;这么大规模的设备模拟,一个是选型怎么做 大量的模拟设备如何从哪获取、二个是这种大量的设备压测基于模拟器/虚拟机的压测,要怎么做并发连接/并发请求呢?
3、测试数据的准备和管理这块:老师有提到需要对测试数据进行管理和监控,以及要确保数据的准确性和一致性;这块大概意思是懂的,但是没有清晰的思路,需要老师再深入讲解一下。
以上,感谢老师麻烦再次给予解惑:smile:

你这个就是相当于不同的场景,不同的标准了吧。如果统一标准有点困难。建议是综合考虑以下几个方向去思考标准:

  1. 从业务场景去出发。比如在野生环境,业务对性能的要求的大概达到什么样的数据就可以了。
  2. 从以往数据出发,正常的数据是什么,峰值大概是多少。举个例子,比如今年双十一,用户流量大概是1000万人,服务需要xx配置。如果第二年双十一,你们预估,用户流量要double,那么服务器配置通常也要double。

所以这个标准没办法直接给,要结合业务需求和往常数据分析一下之后得出,得出之后可能还会调整。这个都是正常的。

建议不要从实体去考虑这个问题,有的终端设备可能使用的socket,有的可能用的rpc ,有的用的http。你就看一下你们目前机器使用的协议。然后应用对应的协议进行压测就行了。

比如 V1 版本,你们的测试数据用的是什么,配置是什么,要有存档。V2版本调参的时候有对比。不要V1的测试出来的数据是基于A配置下的,V2测试的数据是基于B配置下的。这样得出来的最终结论, 就会有数据一致性的问题。

最后我补充下,你在出方案的时候,因为性能涉及到很多服务器资源,如果是全链路压测的,过程就更为复杂。如果方案定好拿不准,可以做初版,最后定结果的时候一定要拉运维和架构师评审一下,让他们帮你一起做补充。

好的,感谢老师回答的很详细了;
1、关于上述补充的第二点,如果只是基于现有机器使用的协议进行压测的话,怎么去模拟真实的网络带宽等软硬件环境配置呢?
如果使用终端设备模拟器的话,如何对百万级终端设备进行模拟请求;终端设备模拟器和压测工具之间要怎么配合呢?
2、另外一点就是,我们这个系统目前是在完善阶段,还没有大批量真实可参考的数据的;这次是首测,当前的服务也是部署在云上的;
对于这种大量的数据压测,如果采用本地压测的话:是否采用云上服务的一比一复刻环境进行压测会更好(比如另起一套同等配置的云上环境,进行负载测试),还是说直接在本地环境部署在虚拟机/物理服务器上,进行同等配置压测?

我觉得你提的这两点都是和你们设备(业务形态)强相关的需求了,这种情况建议你去问下运维,看看他们有没有更好的解决方案。

有条件,还是尽量保持环境一致,能完整复现就完整复现。

回归到本质,你们的业务的形态应该不是传统的互联网模式,所以直接拿传统互联网的方案能套用一部分,但是涉及到和你们产品模式相关的一些定制性方案,如果你们没有相应经验。一定要拉运维和研发评审一下方案。

如果终端设备发送请求这个动作可以通过压测工具发出,那么就可以利用压测工具的并发功能来模拟“百万”终端设备进行模拟请求。 建议与研发团队沟通一下,看看终端设备发送请求的协议,规则都是什么,这样由压测工具模拟发出的请求可以让服务端正确接收,保证压测的有效性。

可以采用持续迭代的过程进行实施,先模拟一种终端设备的“百万”量级的压测,让大家看看效果;然后再“复刻”到其他类型的终端设备压测。