关于HTTP协议相关的内容有很多,一本书的容量可能都写不完。而现在主流网站使用的HTTP的版本还是 HTTP/1.1 版本。 如何查看网站使用的HTTP版本 可以使用如下方法: curl --head www.baidu.com如上命令,可以直接打印出百度网站正在使用的HTTP的版本,结果如下: HTTP/1.1 200 OKAccept-Ranges: bytesCache-Control: p
分解HTTP资源益处 一个web页面可能有很多个HTTP请求。而每个HTTP请求可能又可以分解为多个片段,从时间构成种类上来说可以分为类似DNS解析时间,TCP握手时间,发送HTTP请求时间等等。所以分解HTTP资源的好处就是找到HTTP请求哪里可能是性能瓶颈,更便于去追踪根本原因。 Chrome浏览器打开资源瀑布 这里就用当下比较流行的Chrome浏览器先获取资源瀑布分布。案例就用打开一篇51C
Web页面的变化 互联网页面在过去多年的发展中,至少给了我们三种体验: 超文本文档 (HTML) CSS, CSS样式表的引入大大丰富了页面的展示,页面看起来更漂亮,开发也更容易管理页面布局。 JavaScript ,DHTML, Ajax等技术加入,让web页面转换成了交互式的web应用。这样就会引入更多,比如前端页面和后端服务之间的交互等。 就是因为web页面或者功能越来越多,越来越复杂,才会
MQTT是干什么的 简单来说,它是物联网的通信协议,是消息通道建立,消息发送和消息订阅的标准。如果大家想了解更多概念上的详细可以网上搜索。 Locust测试MQTT的步骤 测试步骤,可以用以下图形表示: 准备环境,安装Locust测试环境 这个比较简单,主要是准备好Python的虚拟开发环境,并安装好locust的python软件包。可以在Locust官方网站找到相关步骤,这里不再赘述。 安装MQ
核心知识点 大概在1980年的时候,在TCP/IP之后,UDP出现并被加入了核心网络协议套件。UDP的全称是User Datagram Protocol,用户数据报协议。 数据报(datagram) 数据报是一个完整、独立的数据实体,携带着从source节点到target节点的信息。它是面向无连接的数据传输,其工作过程类似于报文交换。 分组 (packet) 分组通常指代任何格式化的数据块。它一般
上次内容提到处于传输层之上的应用层会可以利用TCP协议进行数据的传输。针对应用程序而言,有没有什么是值得我们注意的呢?答案是肯定的。 最好最快的性能是不做,尽量少做。即比如发送报文信息,能少发就少发,能不发就不发。这部分内容主要可以分为两小部分: 减少请求次数 尽量减少请求的数据和返回数据(application层面) TCP传输的绝对速度可能无法控制(比如物理特性,光纤与普通电话线),但是我们可
主要讲解Logic Controller组件。
因特网核心协议-IP和TCP 其中IP协议是网络层协议,它是负责联网主机之间的路由选择和寻址。而TCP是“传输控制协议”属于传输层协议。所以他们俩之间是配合,是搭档,合称为“因特网协议套件“。 TCP存在的价值 TCP大家对它并不陌生,但是我们知道一个新生事物出现的时候,必定是为了解决一些问题的。那么TCP的出现主要是解决在不可靠的传输信道上提供可靠的传输。主要是通过以下细节实现:TCP三次握手机
内核时间与用户时间 相信大家对于CPU的内核时间和用户时间会有一个简单的认识了。具体两者之间的差别,可以参考下图: 其中IO密集型的应用为什么说内核时间占用比较多呢?内核时间占用较多,一般是指密集的IO操作需要的系统调用频率也比较高,它是需要执行内核代码达到进行IO操作的目的。 而计算密集型的应用一般是把时间花在用户态代码上比较多。比如图像处理,大数据分析等。 所以说从以上系统的分类来说,在测试
两者之间有没有关系在弄清楚CPU Load和Utilization有没有关系之前,我们首先要了解清楚两者的概念。CPU LoadCPU Load的概念其实是当前正在被CPU所执行的线程数或者正在队列中等待被CPU选中而执行的线程数。说白了就是正在被CPU执行的和可以被CPU执行,已经准备好了的线程数。那么在类Unix系统中,可以可以查看到CPU Load的命令有哪些呢?一般可以用如下3个命令:up
磁盘分类分析策略第二部分,我们需要理解IO问题在性能问题中的重要部分。磁盘I/O可能会造成应用程序有延时,所以说IO问题分析是系统性能分析的一个重要目标。在高负荷下,磁盘成为了一个性能瓶颈。关于磁盘的分类,可能大家都比较熟悉,如下图所示:通常来说固态硬盘的出现或者说闪存技术的出现和发展是为了提供IO的效率和性能,但是我们知道,现代系统对于IO的关于性能方面的需求可能超过了现有的能力,所以性能问题还
分析被测应用类型首先笔者认为在做性能分析甚至在做性能测试之前,我们必须要做或者明确的一点是被测的应用或者系统的类型。当然了,可能 有人觉得被测应用划分有多个维度,我们要怎么划分。确实系统可以从不同的多个维度进行划分或者归类。但是在做性能问题分析时,系统的类型一般是资源消耗方面划分的。如下:从上图中可以发现,一般来说系统可以分为CPU/IO密集型,然后确定了类型之后,我们就可以有一个比较好分析问题的
JMeter测试Java程序性能有天然优势吗?首先我们应该清楚测试Java程序性能不只是JMeter这款工具可以,其他工具工具或者程序也是可以完成对Java程序性能测试的,比如Loadrunner。那么JMeter对Java程序的性能有天然优势吗?答案是不能说天热优势,只是JMeter在测试Java程序时提供了一些便利,比如提供了Java Sampler。下面对Java Request界面元素做进
JSR223 初探JSR223其实包含了有好几种组件。但是其用法都是一致的。主要分类如下:JSR223 PreProcessorJSR223 PostProcessorJSR223 SamplerJSR223 AssertionJSR223 TimerJSR223 Listener现在我们以前置处理器为例进行讲解。其允许在执行取样器之前运行JSR223脚本代码。是比较常用的一种前置处理器。JSR2
Simple Controller组件Simple Controller的组件截图如下,乍一看,感觉没有什么值得注意的参数。确实是的,JMeter发布这个组件的目的,其实不是出于功能的目的,而是出于对脚本组织管理的目的。利用此组件去管理取样器或者其他的逻辑控制组件,会使得脚本看起来更有组织条理性,更直观。下面就以一个案例来说明Simple Controller组件在测试脚本方面起到的作用。首先来看
不同类型线程组的用法首先JMeter中存在有三种不同类型的线程组,具体如下:setUp Thread Group, 此种类型线程组是可以把你想在测试场景运行之前做的操作写入setUpthread group.相当于测试的准备工作。其实它从运行或者说逻辑边界的角度来说和普通的Thread Group是一样的,不同点就是在脚本开始执行的时候,setUp Thread Group内的请求或者action
集合点概念和解释集合点这个概念对于新手可能有点陌生。但是并发量这个概念可能很多人都听说过,而集合点就是为了实现真正的并发量而使用的手段。我们都知道在性能测试时,假如有这样的测试需求:想在某一时间节点触发比如10个并发对于以上的测试需求,能不能在JMeter中实现呢?答案是肯定的。所谓集合点就是集合点的概念就是以同步虚拟用户,使得所设置数目的虚拟用户在某个请求的前面,然后集齐一定数量的虚拟用户之后,
测试场景设置准备工作在用JMeter做性能测试时,我们首先要做测试场景设置,这个是非常关键的。但是我们在测试之前也要做好准备工作:测试需求点剖析,顾名思义,我们要对测试需求点进行分析,分解以达到能正确模拟场景的目的。比如产品团队可能会根据他们对性能的理解提交了性能需求。而测试工程师拿过来这些需求之后就需要去分析这些需求点,然后去分解这些点,目的是为了去更方便地实现基于这些点的性能测试。要多问问题,
什么是关联在JMeter官方文档中没有关联这个概念,但是我们确实要理解在创建脚本时需要考虑做关联。也可能这个叫法不一样。关联的设置在性能测试中可能用的比较多。 很多做过性能测试的工程师对这个概念并不陌生。这个概念对笔者来说,是从Loadrunner学习到的,当时还在用HP的Loadrunner软件进行性能测试,还记得当时用C语言去处理一些文件,就是每次发送HTTP请求之前处理文件内容,然后把文件流
参数化的必要性JMeter参数化在很多情况下是不可缺少的一部分。为什么这么说呢?那是因为我们在压力测试中要模拟真实的情况,就需要在一些地方进行参数化,以达到真实模拟的要求。比如测试系统的登录功能,如果要模拟很多用户的登录操作,那么在压力测试中就需要脚本去获取不同的用户名或者密码进行登录系统的操作。需要做参数化的场景那么此时就抛出了第一个问题:哪些地方需要参数化呢?有一个原则就是,你要思考两个虚拟用
创建JMeter脚本方法在JMeter中可以创建脚本的方法有很多,可能新同学对于创建JMeter脚本不是特别熟悉,那么这里会介绍笔者试过的几种方式。总结如下:首先需要说明的是以上列出的四种方法,没有说哪种是最好的,只能说哪种是适合的。在适当的情况下,选择合适自己的方法就是最好的方法。如下会逐一说明以上四种方法。自带HTTP(S) Test Script Recorder这是JMeter自带的创建脚
属性在JMeter中的重要作用其实不只是在JMeter中,在其他任何软件中,属性都是非常重要的部分,特别是常用的部分。理解了常用的属性以及使用规则,就会发现不同的属性设置会导致不同的结果。所以初学者要掌握和理解属性的用法,以免因误解造成测试结果不准确。JMeter属性有哪些首先JMeter的很多属性都是以文件的形式保存的。这里会总结JMeter到底有哪些属性,都保存在何处,一般JMeter相关的属
性能测试完成之后,一个最主要的工作可能就是性能问题分析了。怎么做性能分析,可能是新手面前比较棘手的问题。对于新手来说,其分析性能问题的思路可能如下,总结为四个字“多点开花”。这种思维方式,我们可以理解为发散模式,在做头脑风暴的时候,是有用的,但是在做事后的性能问题分析,就显得不是那么得心应手。所以对于这种事后分析的类型,还是可以总结出一些规律,然后目的是为了节省不必要的试错时间。根据笔者的经历来说
我们知道在性能测试中,有很多场景需要控制流量以达到我们特定的测试目的,比如如何实现:场景1 在20秒内处理100个请求的性能表现同时评估场景2 在50并发时的性能表现附加要求:当场景1执行结束时,场景2也执行结束。即场景2的执行时间取决于场景1的执行时间。以上三条描述是要在我们的测试脚本中都需要满足的,主要是为了测试两种不同场景在不同类型的压力下各自的性能表现以及对对方的影响程度。比如说我们的
性能测试的概念,我就不说了,百度一下,会出来一大堆,每一种说法都有一定的道理。什么是性能测试呢? 请不要告诉我是测试一个测试对象的性能:),性能测试,就我目前了解到的来说,很多时候都是很难去定位的,有很多东东可能会绊住我们前进的步伐!现在我们大体讲下,我所理解的大致思路针对于一
如何去部署环境,其实这个问题真的不好三言两语就说清楚的。首先整个应用的 网络架构,基础框架架构,还有后台数据库的设计架构,甚至是数据库管理系统的选型的缘由 首先,去和资深员工多请教,多了...
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号