一种计算机服务的压力测试系统及方法与流程
未命名
08-25
阅读:68
评论:0

1.本发明属于计算机软件领域,具体涉及一种计算机服务的压力测试系统及方法。
背景技术:
2.计算机服务系统的技术架构曾经从单机服务加数据库模式向多节点负载均衡模式演变,再演变为现在的微服务架构。随着计算机服务系统复杂度和访问量的不断提高,不管是对业务服务本身,还是对中间件,都提出了更高的服务要求,有必要在相关服务上线前通过压力测试来验证服务的可靠性和吞吐量。
3.目前的压测工具存在以下不足:无法产生足够的压测压力,无法很好地进行压测管理,无法很好地复用压测的成果,无法自动输出一份完整的压测报告。
技术实现要素:
4.本发明的目的在于克服上述现有技术中存在的不足,通过kebernetes产生按需伸缩的压力对计算机服务系统中消息类中间件rocketmq进行线上自动化压测的方式实现对计算机服务的压力测试,压测手段更可靠、稳定、简便,有效提高压测的效率,降低压测的难度。
5.为实现上述发明目的,第一方面,本发明提供一种计算机服务的压力测试系统,包括压测配置模块、压测任务接收运行模块和压测任务多线执行模块;所述压测配置模块用于配置压测任务和要压测的rocketmq集群,并下发压测任务;所述压测任务接收运行模块用于接收压测任务;所述压测任务多线执行模块用于初始化多线程,并执行压测任务。
6.进一步地,还包括压测任务统计模块,所述压测任务统计模块用于采集压测过程中的数据,对数据进行统计,输出统计日志并保存。
7.进一步地,所述压测任务统计模块还适于提供http api输出结果,该结果包括统一的压测报告。
8.第二方面,本发明提供一种计算机服务的压力测试方法,其特征在于,包括如下步骤:(1)确定要压测的rocketmq集群、压测的目标以及压测基准性能指标参数;(2)配置压测任务,包括配置压测方案、压测rocketmq集群的规模、压测的topic数量、压测的topic类型、压测的消息数量或者时间、压测的线程数、压测消息的大小以及压测任务的执行时间;(3)通过http接口接收压测任务,解析压测rocketmq集群、压测topic数量类型、消息大小、线程数,初始化生产消费线程池;同时初始化一个对应的压测统计线程,并将统计日志输出到本地,同时将压测结果输出到内存和数据库中。
9.进一步地,步骤(2)中所述rocketmq集群的规模为压测服务kubenetes副本数。
10.进一步地,步骤(3)中所述压测统计线程适于统计压测中产生的avg rt、max rt、99% rt、95% rt、qps、tps、失败数指标。
11.进一步地,步骤(3)中所述压测统计线程适于在最终输出时通过prometheus获取到机器的cpu、内存、网络开销以及压测过程中的rocketmq集群负载、消息堆积指标。
12.进一步地,步骤(3)中所述压测统计线程适于通过http接口输出统一的压测报告。
13.进一步地,通过springmvc暴露http压测接口,在percontroller中定义对应的压测接口。
14.进一步地,压测线程采用java自定的executorservcie设置fixed线程池,用来控制并发的线程数,通过原子类型atomiclong来控制发送的消息数,通过随机字符串函数来生成随机的字节大小,然后通过rocketmq client初始化producer或者consumer实例来发送或消费消息。
15.与现有技术相比,本发明的有益效果为:
16.1、本发明的压力测试系统通过kubernetes集群的伸缩能力可实现压测所需指标值(如压力)的按需快速放大或缩小,适用于对不同的计算机服务系统进行压力测试。
17.2、本发明的压力测试系统通过灵活的配置选项,可自主配置rocketmq集群,通过调整压测的topic个数、生产&消费消息数、消息字节数、生产消费线程数、事务&非事务消息类型等可实现多场景的基准性能压测。
18.3、本发明的压力测试系统及方法中提供了http接口,方便集成到各个系统。也可以根据提供的http接口实现各种灵活的压测任务,并通过统一的http接口输出统一的压测报告。
附图说明
19.图1是本发明压力测试系统一个实施例的架构图。
20.图2是本发明压力测试方法一个实施例的流程图。
具体实施方式
21.下面结合附图和具体实施例,对本发明的技术方案做进一步说明。
22.本文中,英文名的含义说明如下:
23.rocketmq:是阿里开源的一个消息队列服务。云原生“消息、事件、流”实时数据处理平台,覆盖云边端一体化数据处理场景。
24.kubernetes:是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。
25.springmvc:是一个提供构建web应用程序的全功能mvc框架。
26.percontroller:只是performance controller的简写。主要负责对外提供http接口服务。
27.executorservcie:是jdk自带的线程池的构建类。
28.atomiclong:是jdk自带的原子类型类。
29.rocketmq client:是指rocketmq的client包。
30.producer:消息生产者。
31.consumer:消息消费者。
32.rsync:是linux下的一个同步命令行工具。
33.如图1所示,本发明计算机服务的压力测试系统的一个实施例,包括压测配置模块、压测任务接收运行模块和压测任务多线执行模块;所述压测配置模块用于配置压测任
务和要压测的rocketmq集群,并下发压测任务;所述压测任务接收运行模块用于接收压测任务;所述压测任务多线执行模块用于初始化多线程,并执行压测任务。
34.在一个实施例中,还包括压测任务统计模块,所述压测任务统计模块用于采集压测过程中的数据,对数据进行统计,输出统计日志并保存。
35.在一个实施例中,所述压测任务统计模块还适于提供http api输出结果,该结果包括统一的压测报告。
36.如图2所示,本发明计算机服务的压力测试方法的一个实施例,包括如下步骤:
37.(1)确定要压测的rocketmq集群、压测的目标以及压测基准性能指标参数;
38.(2)配置压测任务,包括配置压测方案、压测rocketmq集群的规模、压测的topic数量、压测的topic类型、压测的消息数量或者时间、压测的线程数、压测消息的大小以及压测任务的执行时间;
39.(3)通过http接口接收压测任务,解析压测rocketmq集群、压测topic数量类型、消息大小、线程数,初始化生产消费线程池;同时初始化一个对应的压测统计线程,并将统计日志输出到本地,同时将压测结果输出到内存和数据库中。在图2中,监控报告线程即压测统计线程。
40.在一个实施例中,步骤(2)中所述rocketmq集群的规模为压测服务kubenetes副本数。
41.在一个实施例中,步骤(3)中所述压测统计线程适于统计压测中产生的avg rt、max rt、99% rt、95% rt、qps、tps、失败数指标。
42.在一个实施例中,步骤(3)中所述压测统计线程适于在最终输出时通过prometheus获取到机器的cpu、内存、网络开销以及压测过程中的rocketmq集群负载、消息堆积指标。
43.在一个实施例中,步骤(3)中所述压测统计线程适于通过http接口输出统一的压测报告。
44.在一个实施例中,通过springmvc暴露http压测接口,在percontroller中定义对应的压测接口。
45.在一个实施例中,压测线程采用java自定的executorservcie设置fixed线程池,用来控制并发的线程数,通过原子类型atomiclong来控制发送的消息数,通过随机字符串函数来生成随机的字节大小,然后通过rocketmq client初始化producer或者consumer实例来发送或消费消息。
46.本发明的上述实施例,提供自动伸缩压测集群的能力,提供高度可配置压测任务的能力,提供http api集成的能力,提供多方位自动采集输出压测报告的能力。通过kubenetes的自动伸缩能力,自己实现的http server api开放能力,提供了更可靠稳定简便的压测手段,有效提高压测的效率和降低压测的难度。
47.当然,还可使用本地压测工具和shell脚本以及rsync同步来实现类似的压测效果。
48.最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何
修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
技术特征:
1.一种计算机服务的压力测试系统,其特征在于,包括压测配置模块、压测任务接收运行模块和压测任务多线执行模块;所述压测配置模块用于配置压测任务和要压测的rocketmq集群,并下发压测任务;所述压测任务接收运行模块用于接收压测任务;所述压测任务多线执行模块用于初始化多线程,并执行压测任务。2.根据权利要求1所述的计算机服务的压力测试系统,其特征在于,还包括压测任务统计模块,所述压测任务统计模块用于采集压测过程中的数据,对数据进行统计,输出统计日志并保存。3.根据权利要求2所述的计算机服务的压力测试系统,其特征在于,所述压测任务统计模块还适于提供http api输出结果,该结果包括统一的压测报告。4.一种计算机服务的压力测试方法,其特征在于,包括如下步骤:(1)确定要压测的rocketmq集群、压测的目标以及压测基准性能指标参数;(2)配置压测任务,包括配置压测方案、压测rocketmq集群的规模、压测的topic数量、压测的topic类型、压测的消息数量或者时间、压测的线程数、压测消息的大小以及压测任务的执行时间;(3)通过http接口接收压测任务,解析压测rocketmq集群、压测topic数量类型、消息大小、线程数,初始化生产消费线程池;同时初始化一个对应的压测统计线程,并将统计日志输出到本地,同时将压测结果输出到内存和数据库中。5.根据权利要求4所述的计算机服务的压力测试系统,其特征在于,步骤(2)中所述rocketmq集群的规模为压测服务kubenetes副本数。6.根据权利要求4所述的计算机服务的压力测试系统,其特征在于,步骤(3)中所述压测统计线程适于统计压测中产生的avg rt、max rt、99%rt、95%rt、qps、tps、失败数指标。7.根据权利要求4所述的计算机服务的压力测试系统,其特征在于,步骤(3)中所述压测统计线程适于在最终输出时通过prometheus获取到机器的cpu、内存、网络开销以及压测过程中的rocketmq集群负载、消息堆积指标。8.根据权利要求4-7任一项所述的计算机服务的压力测试系统,其特征在于,步骤(3)中所述压测统计线程适于通过http接口输出统一的压测报告。9.根据权利要求4所述的计算机服务的压力测试系统,其特征在于,步骤(3)中,通过springmvc暴露http压测接口,在percontroller中定义对应的压测接口。10.根据权利要求9所述的计算机服务的压力测试系统,其特征在于,所述步骤(3)中,压测线程采用java自定的executorservcie设置fixed线程池,用来控制并发的线程数,通过原子类型atomiclong来控制发送的消息数,通过随机字符串函数来生成随机的字节大小,然后通过rocketmq client初始化producer或者consumer实例来发送或消费消息。
技术总结
本发明公开了一种计算机服务的压力测试系统及方法,所述系统包括压测配置模块、压测任务接收运行模块和压测任务多线执行模块;所述压测配置模块用于配置压测任务和要压测的RocketMQ集群,并下发压测任务;所述压测任务接收运行模块用于接收压测任务;所述压测任务多线执行模块用于初始化多线程,并执行压测任务。本发明通过Kubernetes集群的伸缩能力可实现压测所需指标值(如压力)的按需快速放大或缩小,适用于对不同的计算机服务系统进行压力测试。测试。测试。
技术研发人员:吴平腾
受保护的技术使用者:上海捷晓信息技术有限公司
技术研发日:2023.04.18
技术公布日:2023/8/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/