在软件架构与中间件实验的最后,要求进行非功能测试,那得非压力测试莫属了。虽然之前学习秒杀项目的时候看视频里面用过jmeter,但没有自己实操过,趁着这次机会,使用一下。
QPS与TPS
1、TPS:
Transactions Per Second,意思是每秒事务数。一个事务是指客户端向服务器发送请求然后服务器做出反应的过程,具体的事务定义,可以是一个接口、多个接口、一个业务流程等等。以单接口定义为事务举例,每个事务包括了如下3个过程:
- 向服务器发请求
- 服务器自己的内部处理(包含应用服务器、数据库服务器等)
- 服务器返回结果给客户端
如果每秒能够完成 N 次以上3个过程,TPS 就是 N。
TPS 是软件测试结果的测量单位。我们在进行服务性能压测时,接口层面最常关注的是最大 TPS 以及接口响应时间,个人理解 TPS 可以指一组逻辑相关的请求,而服务整体处理能力取决于处理能力最低模块的TPS值。
2、QPS:
Queries Per Second,意思是每秒查询率。指一台服务器每秒能够响应的查询次数,用于衡量特定的查询服务器在规定时间内所处理流量多少,主要针对专门用于查询的服务器的性能指标,比如dns,它不包含复杂的业务逻辑处理,比如数据库中的每秒执行查询sql的次数。QPS 只是一个简单查询的统计显然,不能描述增删改等操作,显然它不够全面,所以不建议用 QPS 来描述系统整体的性能;
QPS 基本类似于 TPS,但是不同的是,对于一个事务访问,会形成一个 “ T ”;但一次 " T " 中,可能产生多次对服务器的请求,服务器对这些请求,就可计入 QPS 之中。
3、区别:
- 如果是对一个查询接口压测,且这个接口内部不会再去请求其它接口,那么 TPS = QPS,否则,TPS ≠ QPS
- 如果是容量场景,假设 N 个接口都是查询接口,且这个接口内部不会再去请求其它接口,QPS = N * TPS\
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】
Jmeter配置WebSocket请求
利用plugin manager中提供的WebSocket插件,可以进行WebSocket应用程序的压力测试。
使用jmeter工具对TPS进行测试,其中测试的事务为consumer建立连接,并发送订阅消息,记录该事务的吞吐量。jmeter配置500个线程,在3秒内每个线程发起一次上述事务,重复两次,吞吐量结果如下表所示(仅展示重要信息):
可以看到,可以达到332.3的TPS,效率还是不错的。同时,应用进程的资源监视图如下所示:
可以看到应用进程的自选消耗并没有激增。下面来调整一下参数,试试线程数5000, 1秒内发起请求,重复两次的结果:
结果是电脑炸了,,,单机无法达到一秒内创建5000个线程发起请求
观察日志可以看到Jmeter的堆空间直接溢出了,也想过通过jvm参数-Xmx来配置堆空间大小,但是本机的物理内存总共也就8G,怕整个电脑都死机,没有继续测试了╭(╯^╰)╮
看的出来高并发场景还是很难模拟的,仅仅靠单机是做不到的,,,越来越佩服大厂的架构师了。
将参数改成线程数2000, 1秒内发起请求,重复两次。
TPS达到了438,说明本实验产品的性能还是不错的。
如果觉得有用,就请关注、点赞、在看、分享到朋友圈吧。