基于kylinTOP工具的HTTP2压力测试
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都有可能)。

基于kylinTOP工具的HTTP2压力测试的更多相关文章
- 基于奇林软件kylinTOP工具的HTTP2协议的压力测试
1.HTTP协议概述 说到http,那就应该先了解一下http协议的发展历史.关于http协议的历史,可以参考阮一峰老师的这篇博客文章HTTP 协议入门,里面介绍的比较详细了.简单来说http先后存在 ...
- 性能测试工具 jmeter 分布式压力测试实操
性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...
- [AapacheBench工具]web性能压力测试工具的应用与实践
背景:网站性能压力测试是性能调优过程中必不可少的一环.服务器负载太大而影响程序效率是很常见的事情,一个网站到底能够承受多大的用户访问量经常是我们最关心的问题.因此,只有让服务器处在高压情况下才能真正体 ...
- 一个基于.NET平台的自动化/压力测试系统设计简述
AutoTest系统设计概述 AutoTest是一个基于.NET平台实现的自动化/压力测试的系统,可独立运行于windows平台下,支持分布式部署,不需要其他配置或编译器的支持.(本质是一个基于协议的 ...
- JMeter工具接口性能压力测试分析与优化
最近公司做的项目,要求对相关接口做性能压力测试,在这里记录一下分析解决过程. 压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等.而问题定位分析通常情 ...
- 基于Jmeter的轻量级接口压力测试(一)
一.操作步骤: 1.在测试计划下新增一个线程组,并在线程组下新增一个http请求: 2.读取配置文件中的参数:在添加的http请求下添加配置元件-CSV DATA SET CONFIG 3.配置待测试 ...
- 基于TSUNG对MQTT进行压力测试-测试结果
一.TSUNG压测前概念温习 https://www.cnblogs.com/lingyejun/p/7898873.html 二.TSUNG在服务器上的安装步骤 Tsung压测时总连接数 = 本机可 ...
- 基于TSUNG对MQTT进行压力测试-基础概念温习
[单台Broker压测结果]请移步另一篇博客:http://www.cnblogs.com/lingyejun/p/7941271.html 一.TCP报头部中的SYN.FIN.ACK: ACK : ...
- .net分布式压力测试工具(Beetle.DT)
肯定有人会问为什么会写这样一个开源工具?和现有的有什么差别?不过对于一个程序员来说写东西还真不需要理由的:),主要原因是工作有点闲(开玩笑),不过说实话一个程员怎可能会停止写代码呢(作为一个奔4的程序 ...
随机推荐
- Django环境的搭建以及最简示例
一.环境的搭建 先安装pip yum install python-pip 安装失败: 安装epel扩展源 yum install epel-release 在安装pip 再利用pip安装django ...
- Java 并发编程面试题
并发编程面试题-内存模型说下内存模型定义为什么要有内存模型为什么要重排序,重排序在什么时候排如何约束重排序规则happens-before什么是顺序一致性CAS 实现的原理,是阻塞还是非阻塞方式?什么 ...
- MyBatis学习笔记二:MyBatis生产中使用环境搭建
这里是在上一个环境的基础上修改的,这里就不在给出所有的配置,只给出哪里修改的配置 1.修改POJO对象为注解方式 2.创建Dao层接口 package com.orange.dao; import c ...
- <USACO06NOV>玉米田Corn Fields
状压emm 二进制真有趣 来自dp垃圾的欣喜 Description 农民 John 购买了一处肥沃的矩形牧场,分成M*N(1 <= M <= 12; 1 <= N <= 12 ...
- 餐厅随评系列之四:Umu日本料理(米其林二星)
文章目录 在过去的几个月,工作和生活都极其忙碌,因此博客短暂停更了一阵子.慢慢积累下了很多素材,从近期开始恢复博客更新,不过很多内容估计得靠回忆了. 索性采取"倒叙"的方法,先从最 ...
- AI:是猫还是狗,这是个问题
如果你不喜欢小猫和小狗,你可能不知道他们具体是哪一种品种,但是一般来说,你都能区分出这是猫还是狗,猫和狗的特征还是不一样的,那我们如何用机器学习的方法训练一个网络区分猫狗呢? 我们选用的是 Kaggl ...
- FPGA小白学习之路(4)PLL中的locked信号解析(转)
ALTPLL中的areset,locked的使用 转自:http://www.360doc.com/content/13/0509/20/9072830_284220258.shtml 今天对PLL中 ...
- iNeuOS工业互联平台,.NETCore开发的视频服务组件iNeuVideo,RTSP转WebSocket
目 录 1. 概述... 2 2. 将来集成到iNeuOS平台演示... 3 3. iNeuVideo结构... 3 4. iNeuVideo部署及 ...
- PAT-进制转换
3.5-进制转换 对于一个P进制的数,如果要转换为Q进制的数,需要分为两步: ①将P进制数x转换为十进制数y 对于一个十进制数y=d1d2···dn,可以将其写为: y = d1 * 10n-1 + ...
- github浏览器无法访问,并且idea无法push项目
github浏览器无法访问,并且idea无法push项目 原因:前一晚还能正常访问github,今天就无法提交项目了.前一步的操作为删库,然后改库.估计是因为dns出现了问题,具体问题不知道. 网上一 ...