性能测试实战30讲
高楼
前HP高级性能专家,7DGroup创始人
立即订阅
4054 人已学习
课程目录
已更新 24 讲 / 共 30 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨“老板,之前咱TPS是100,我优化完是10000”
免费
第一模块:性能测试基础篇 (6讲)
01丨性能综述:性能测试的概念到底是什么?
02丨性能综述:TPS和响应时间之间是什么关系?
03丨性能综述:怎么理解TPS、QPS、RT、吞吐量这些性能指标?
04丨JMeter和LoadRunner:要知道工具仅仅只是工具
05丨指标关系:你知道并发用户数应该怎么算吗?
06丨倾囊相授:我毕生所学的性能分析思路都在这里了
免费
第二模块:性能测试工具及性能场景篇 (9讲)
07丨性能测试工具:如何录制脚本?
08丨案例: 手把手教你编写最简单的性能脚本
09丨关联和断言:一动一静,核心都是在取数据
10丨案例:在JMeter中如何设置参数化数据?
11丨性能脚本:用案例和图示帮你理解HTTP协议
12丨性能场景:做参数化之前,我们需要考虑什么?
13丨性能测试场景:如何进行场景设计?
14丨性能测试场景:如何理解业务模型?
15丨性能测试场景:如何进行监控设计?
春节策划 (2讲)
春节策划丨性能评估和性能分析试题,等你挑战!
春节策划丨快来挑战一下自己的分析逻辑吧!
第三模块:性能监控分析工具篇 (6讲)
16丨案例:性能监控工具之Grafana+Prometheus+Exporters
17丨CentOS:操作系统级监控及常用计数器解析(上)
18丨CentOS:操作系统级监控及常用计数器解析(下)
19丨Java & C ++:代码级监控及常用计数器解析(上)
20丨Java & C ++:代码级监控及常用计数器解析(下)
21丨Tomcat:中间件监控及常用计数器解析
性能测试实战30讲
登录|注册

11丨性能脚本:用案例和图示帮你理解HTTP协议

高楼 2020-01-08
当前使用得最为广泛的应用层协议就是 HTTP 了。我想了好久,还是觉得应该把 HTTP 协议写一下。
因为做性能测试分析的人来说,HTTP 协议可能是绕不过去的一个槛。在讲 HTTP 之前,我们得先知道一些基本的信息。
HTTP(HyperText Transfer Protocol,超文本传输协议),显然是规定了传输的规则,但是它并没有规定内容的规则。
HTML(HyperText Marked Language,超文本标记语言),规定的是内容的规则。浏览器之所以能认识传输过来的数据,都是因为浏览器具有相同的解析规则。
希望你先搞清楚这个区别。
我们首先关注一下 HTTP 交互的大体内容。想了很久,画了这么一张图,我觉得它展示了我对 HTTP 协议在交互过程上的理解。
在这张图中,可以看到这些信息:
在交互过程中,数据经过了 Frame、Ethernet、IP、TCP、HTTP 这些层面。不管是发送和接收端,都必须经过这些层。这就意味着,任何每一层出现问题,都会影响 HTTP 传输。
在每次传输中,每一层都会加上自己的头信息。这一点要说重要也重要,说不重要也不重要。重要是因为如果这些头出了问题,非常难定位(在我之前的一个项目中,就曾经出现过 TCP 包头的一个 option 因为 BUG 产生了变化,查了两个星期,一层层抓包,最后才找到原因)。不重要是因为它们基本上不会出什么问题。
HTTP 是请求 - 应答的模式。就是说,有请求,就要有应答。没有应答就是有问题。
客户端接收到所有的内容之后,还要展示。而这个展示的动作,也就是前端的动作。在当前主流的性能测试工具中,都是不模拟前端时间的比如说 JMeter。我们在运行结束后只能看到结果,但是不会有响应的信息。你也可以选择保存响应信息,但这会导致压力机工作负载高,压力基本上也上不去。也正是因为不存这些内容,才让一台机器模拟成千上百的客户端有了可能。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《性能测试实战30讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

  • @zzw
    思考题:你能说一下为什么压力机不模拟前端吗?

    目前的压力工具大部分是针对服务端,即模拟「网络 API 请求」,而前端程序基本上是由一系列的「用户交互事件」所驱动,其业务状态是一颗 DOM 树。

    通常来讲,前端性能关注的是浏览器端的页面渲染时间、资源加载顺序、请求数量、前端缓存使用情况、资源压缩等内容,希望借此找到页面加载过程中比较耗时的操作和资源,然后进行有针对性的优化,最终达到优化终端用户在浏览器端使用体验的目的。

    目前获取和衡量一个页面的性能,主要可以通过以下几个方面:Performance Timing API、Prpfile 工具、页面埋点计时、资源加载时序图分析;
    - Performance Timing API 是一个支持 Internet Explorer 9 以上版本及 WebKit;
    内核浏览器中用于记录页面加载和解析过程中关键时间点的机制,它可以详细记录每个页面资源从开始加载到解析完成这一过程中具体操作发生的时间点,这样根据开始和结束时间戳就可以计算出这个过程所花的时间了;
    - Profile 是 Chrome 和 Firefox 等标准浏览器提供的一种用于测试页面脚本运行时系统内存和 CPU 资源占用情况的 API;
    - 通过脚本埋点计时的方式来统计没部分代码的运行时间;
    - 借助浏览器或其他工具的资源加载时序图来帮助分析页面资源加载过程中的性能问题。这种方法可以粗粒度地宏观分析浏览器的所有资源文件请求耗时和文件加载顺序情况。

    作者回复: 描述的很详细。有机会可以写一下前端的性能分析了。

    2020-01-20
    3
  • songyy
    你能说一下为什么压力机不模拟前端吗:因为模拟前端消耗的计算资源太大,相比之下意义可能并不大。
    计算消耗大,是说去Parse这个前端的HTML,需要一些计算量;如果需要把这些内容给render出来,需要更多的内存。
    一个HTML页面,Load之后会load更多的一些API,这些API可以通过估算,进行混合测试;而那些固态资源,通常会被 浏览器Cache / 网络中的一些路由器给cache,且是从一个静态资源的server单独serve,不用太担心。
    需要测的是产生的压力,前端产生
     无意义。

    作者回复: 理解的很正确。

    2020-01-15
  • 小老鼠
    1,JMeter中cookies几种类型可介绍下吗?2,可否介绍yahoo前端优化30条建议?

    作者回复: 这些不在我认为的专栏应该写的重点范围里。找找度娘就可以了。

    2020-01-11
  • 善行通
    1、听完这样一节才知道http协议在交互过程中,数据经过了 Frame、Ethernet、IP、TCP、HTTP 这些层面,还会再每一次传输都会增加自己的信息头,而且还了解了应答模式;

    2、之前一直没有思考【客户端接收到所有的内容之后,还要展示。而这个展示的动作,也就是前端的动作。在当前主流的性能测试工具中,都是不模拟前端时间的,比如说 JMeter。我们在运行结束后只能看到结果,但是不会有响应的信息。你也可以选择保存响应信息,但这会导致压力机工作负载高,压力基本上也上不去。也正是因为不存这些内容,才让一台机器模拟成千上百的客户端有了可能】 听完这一次后,明白了很多细节;

    3、明白Nginx【压缩级别【1-9】值越大,压缩率就越高】之前只知道有压缩,但不知道再什么地方压测,今天看了老师写 Ngix 配置才明白再这里配置;

    4、明白各个浏览器厂商在处理并发限制不一样,之前一直不知道,今天增加自己知识积累。

    5、之前不知道https也是影响性能的,听完了这一篇增加了知识;

    6、感谢老师总结【性能分析中,主要关心的部分就是传输字节的大小、超时的设置以及压缩等内容。在编写脚本的时候,要注意 HTTP 头部,至于 Body 的内容,只要能让业务跑起来即可。】


    为什么压力机不模拟前端
    1、客户端接收到所有的内容之后会在前端浏览器渲染,如果在本地渲染会增加压力机性能消耗,当消耗过大会影响压力发压能力,如果下载资源保存到本地,会增加IO操作压力机性能。
    2、前端js/css/img等静态资源都走CDN.

    作者回复: 照这样下去。已经快超过我了。哈哈。

    2020-01-10
  • 律飛
    为什么压力机不模拟前端吗?
    性能测试的目的是获得系统性能指标,利用断言判断业务是否成功即可,并不关注前端页面显示内容,所以无需保存响应信息。
    测试工具时,必须多了解参数,知其然并要知其所依然,才能更高效地更自如地配置参数,准确地满足测试要求。

    作者回复: 理解滴对。

    2020-01-08
  • 晴空
    你能说一下为什么压力机不模拟前端吗?
    在当前主流的性能测试工具中,都是不模拟前端时间的,比如说 JMeter。我们在运行结束后只能看到结果,但是不会有响应的信息。你也可以选择保存响应信息,但这会导致压力机工作负载高,压力基本上也上不去。也正是因为不存这些内容,才让一台机器模拟成千上百的客户端有了可能。

    另外前端页面展示还有部分是静态的图片或文字等,这些可以列在性能测试范围内也可以列在性能测试范围外。

    作者回复: 嗯。正确理解了内容。

    2020-01-08
收起评论
6
返回
顶部