基于kylinTOP工具的HTTP2压力测试

简介:

基于kylinTOP工具的HTTP2压力测试
1、HTTP协议概述
说到http,那就应该先了解一下http协议的发展历史。关于http协议的历史,可以参考阮一峰老师的这篇博客文章 HTTP 协议入门,里面介绍的比较详细了。简单来说http先后存在0.9、1.0、1.1三个版本,我们目前上网使用最广泛的是http/1.1协议,发布于1997年,距今已经20多年了,至今仍然是访问网站的主流协议(真是老而弥坚啊)。http/1.1的报文格式如下:
request报文

response报文

HTTP/1.1的问题

http协议早期为互联网的普及做出了巨大的贡献,构建了现代互联网的基础架构,但是由于协议制定的时间较早,在很多方面还是有着局限性,在互联网高速发展,信息爆炸的今天,难免有些捉襟见肘。主要体现在以下几个方面:

传输报文为ascii文本形式,对于http header不会进行压缩。这样对于可读性是比较友好,但对于计算机不太友好,此外传输效率较低
请求只能由客户端发起,不能由服务端发起。这种模式限制了一些主动推送或者有双工需求的使用场景,当然也有比如websocket之类的解决方案,但那严格来说已经不属于http协议的范畴了。
同步阻塞通讯:其实在http/1.1中已经默认使用了持久连接(persistent connection),可以做到多个请求复用同一个tcp连接,同时利用管道机制(pipelining),可以让请求同时在一个tcp连接上发送,但是http本质上还是一个请求/响应模型,服务端仍然需要按照请求的顺序依次回复,不能乱序回复。这样要是前面的回应特别慢,后面就会有许多请求排队等着。这称为"队头堵塞"(Head-of-line blocking)。
由于队头堵塞问题的存在,在客户端要下载大量资源的情况下,不得不和服务器建立多个TCP连接(大部分浏览器允许最多建立6个和指定服务器的持久连接),达到并发传输的效果,而众所周知,建立和销毁tcp连接的成本是非常高昂的(如果是https就更高),同时也增加了服务端的资源消耗。
基于以上的这些痛点,催生出了http/2。

HTTP/2
SPDY
http/2起源于谷歌的SPDY项目(没错,又是谷歌-_-),于 2009 年年中发布,其主要目标是通过解决 HTTP/1.1 中广为人知的一些性能限制来减少网页的加载延迟(那些广为人知的限制我在上面都提到了)。具体来说,这个项目设定的目标如下:

页面加载时间 (PLT) 减少 50%。
无需网站作者修改任何内容。
将部署复杂性降至最低,无需变更网络基础设施。
与开源社区合作开发这个新协议。
收集真实性能数据,验证这个实验性协议是否有效。
到了2012 年,这个新的实验性协议得到了 Chrome、Firefox 和 Opera 的支持,越来越多的大型网站(如 Google、Twitter、Facebook)和小型网站开始在其基础设施内部署 SPDY。事实上,在被行业越来越多的采用之后,SPDY 已经具备了成为一个标准的条件。

观察到这一趋势后,HTTP 工作组 (HTTP-WG) 将这一工作提上议事日程,吸取 SPDY 的经验教训,并在此基础上制定了官方“HTTP/2”标准。在拟定宣言草案、向社会征集 HTTP/2 建议并经过内部讨论之后,HTTP-WG 决定将 SPDY 规范作为新 HTTP/2 协议的基础。2015 年初,IESG 审阅了新的 HTTP/2 标准并批准发布。

2、HTTP2的压力测试关注点

  现网中已经存在大量的基于HTTP2协议的WEB服务,对于HTTP2协议,浏览器访问web服务存在较大的差异,主要体现在相同的并发量的情况下,WEB服务会受到突发性HTTP请求的冲击。主要原因是对于浏览器访问一个页面,HTTP/1.1协议,浏览器最并发量控制在6个以内。但对于HTTP2的请求最高并量几乎没有限制,如下所示。

要对支持HTTP2协议的网站进行压力测试,必须是基于HTTP/2协议的请求并发(一般支持HTTP2协议的WEB服务,都会同时支持HTTP/1.1,与客户端之间建立链接时,必须进行握手,互方协商需要使用的协议,如果测试工具不支持HTTP/2协议,下发HTTP/1.1的协议请求,WEB服务器也可以正常提供服务,这时测试的结果就不是你想要的结果)。

要想证明性能测试工具下的HTTP协议是HTTP/1.1还是HTTP2,可以通过抓包工具抓取server heloo的报文进行确认。如下所示:server hello报文中的ALPN  Next Protocol:h2 ,是判断发送HTTP请求协议版本的重要判断依据。

3、支持HTTP2协议的压力测试工具

国内常用的Jmeter,LoadRunner 12性能测试工具,这两个均不支持HTTP2协议的请求。下图是通过LR 12.55导入chrome HAR包,发送HTTP请求的抓包图。报文中没有ALPN  Next Protocol:h2的关键字(LR 没有采用ie录制脚本的原因是ie不支持HTTP/2)。目前国内阿里PTS,腾讯WeTest,华为CPTS均不支持HTTP2协议。本文采用奇林软件kylinTOP

 4、HTTP2压力测试

4.1、录制脚本

      本次以脚本录制网站案采用:https://www.ustc.edu.cn/ (中国科学技术大学官网)

打开HTTP2开关,点击确认,弹出如下对话框,输入要录制的URL

录制生成如下脚本

调试脚本

调试过程可以看到HTTP请求的瀑布图,几科所有HTTP请求都是同时并发。目前kylinTOP工具在处理HTTP/2协议的HTTP的请求并发模型依据请求的父子关系,按照一定的算法进行并发。从并法的瀑布图看,与HTTP2协议的标准相一致(HTTP2标准并发是按照尽可能的并发,除非两个请求有依赖关系。最高并发可以达到300都有可能)。

原文地址https://www.cnblogs.com/kylinTOP/p/12517970.html

相关文章
|
13天前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
12天前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
12天前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
21 2
|
23天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
24 1
|
1月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
38 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
1月前
|
jenkins 测试技术 持续交付
提升软件测试效率的实用技巧与工具
【10月更文挑战第12天】 本文将深入探讨如何通过优化测试流程、引入自动化工具和持续集成等策略,来显著提高软件测试的效率。我们将分享一些实用的技巧和工具,帮助测试人员更高效地发现和定位问题,确保软件质量。
49 2
|
1月前
|
测试技术
黑盒功能测试工具UFT的使用
黑盒功能测试工具UFT的使用
36 0
黑盒功能测试工具UFT的使用
|
1月前
|
XML 网络安全 数据格式
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
Kali渗透测试:Windows事件管理工具wevtutil的使用方法(一)
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
257 3
快速上手|HTTP 接口功能自动化测试
|
2月前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
下一篇
无影云桌面