基于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

相关文章
|
14天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
23 0
|
1月前
|
网络协议 Linux 网络安全
curl(http命令行工具):Linux下最强大的网络数据传输工具
curl(http命令行工具):Linux下最强大的网络数据传输工具
44 0
|
1月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
1月前
|
编解码 测试技术 索引
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
在我们简要介绍了 HLS 协议的基础知识,接下来我们详细介绍一种使用 Jmeter 编写压测 HLS 协议脚本的方法。
72 1
性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本
|
1月前
|
人工智能 监控 测试技术
利用AI辅助工具提升软件测试效率
【2月更文挑战第17天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。在软件测试领域,AI技术也发挥着重要作用。本文将探讨如何利用AI辅助工具提升软件测试效率,包括自动化测试、智能缺陷识别和预测等方面。通过引入AI技术,软件测试过程将变得更加高效、准确和可靠。
179 1
|
1月前
|
JSON 数据格式
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析试读版
27 0
|
1月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。
|
30天前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
1天前
Swagger基本使用与RestTemplate发送http接口测试
Swagger基本使用与RestTemplate发送http接口测试
8 1
|
14天前
|
测试技术 Linux Apache
网站压力测试工具webbench图文详解
网站压力测试工具webbench图文详解
11 0