1.需要从ES表中获取大量数据需要┅次获取23张表中数据内容,其中涵盖了订单数据通信连接数据,状态信息数据测量数据以及配置信息等数据的获取,内部每次获取均需要进行相应接口调用从而获取数据。
2.优化之前采用的是forforeach循环进行相应数据获取,接口响应时间较慢
- Parallel类是对线程的一个很好地抽象,该类位于System.Threading.Task 命名空间中提供了数据的任务的并行性。
- Parallel类定义了并行的for和foreach的静态方法对于c#的for和foreach而言,循环从一个线程中运行Parallel类使用多個任务,因此使用多个线程去完成本次作业
链接: 密码:hdnc
Jmeter使用本次不做介绍,相关文档请参考:
- 场景二 10个用户单次访问
- 场景三 10个用户循环访问10次。
- 场景三 50个用户循环访问10次
10个用户并发(循环10次):
50个用户并发(循环10次):
10个用户并发(循环10次):
50个用户并发(循环10次):
10个用户并发(循环10次):
50个用户并发(循环10次):
10个用户并发(循环10次):
50个用户并发(循环10次):
每秒从服务器端接收到的数据量(KB/Sec) |
场景二:10个用户单次:
每秒从服务器端接收到的数据量(KB/Sec) |
场景三:10个用户循环调用10次:
场景四:50个用户循环调用10次
每秒从服务器端接收到的数据量(KB/Sec) |
- 并发执行报文查询,初次使用由于进行编译代码以及初始化程序响应时间较长,后续调用响应时间依次减少
- 数据並行获取,通过使用Parallel.Foreach能够更好的达到预期优化效果但是具体采用哪种方式还需要视情况而定。
- 当并发数增加时性能提升较大;但是在並发数到达50时,内部线程数已经超过300个线程四种方式响应时间均比较慢。
- For以及Foreach在线程数较大的情况下可能会出现服务调用错误的情况,其中foreach的方式出现错误数更多。