性能工具
文章平均质量分 78
性能工具
sysu_lluozh
这个作者很懒,什么都没留下…
展开
-
【JMeter】JMeter的工作原理
一、JMeter简介JMeter是Apache组织开发的基于Java的开源的压力测试工具、接口测试工具可以模拟高并发和多次循环的测试场景,能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试,具有可移植性二、压测的原理性能测试的核心三原则: 基于协议,多线程,场景模拟基于协议基于应用层和传输层的各种协议,比如http、udp、ftp和tcp等多线程通过进程下启动线程的方式来模拟并发用户实现负载场景模拟通过模拟用户使用的真实场景,来提高性能测试的准确性J原创 2022-03-02 10:02:45 · 6651 阅读 · 0 评论 -
【JMeter】多用户token使用
在测试时,经常有模拟用户登录,获取用户token后再去请求接口的场景性能中,需模拟多线程并发测试多用户产生多个token,每个用户使用各自的token进行接下来的请求多用户获取多token并在接下来的业务接口请求中使用的场景非常多,接下来介绍的是其中一种通过将获取的token信息写入csv文件后再去读取的方式一、场景接口只有两个接口,一个是登录获取token的登陆接口,一个是使用token进行请求的业务接口1.1 登录接口请求:POST http://localhost:5007/securi原创 2022-01-18 08:48:03 · 7152 阅读 · 11 评论 -
【JMeter】Address already in use: connect问题
在windows系统使用jmeter发起压力时,如果qps达到一定的值比如超过1000时,一段时间后出现报错信息报错信息java.net.BindException: Address already in use: connect原因分析从字面的意思看,地址被占用windows提供给TCP/IP链接的端口为1024-5000,并且要四分钟来循环回收它们,导致在短时间内跑大量的请求时将端口占满了,导致如上报错解决办法cmd中输入regedit命令打开注册表找到以下目录HKEY_LOCAL_原创 2021-05-24 08:46:16 · 2816 阅读 · 0 评论 -
【JMeter】csv文件读取导致请求count固定的问题
一、问题背景有个小伙伴在使用Furion性能平台时反馈,每次执行测试,请求的总count数量都完全一样,问平台是否将这个数据直接写成固定不变了这实在是无法接受这样的质疑,接下来看看究竟是哪里出现了这样的误会导致二、问题确认通过唯一变量变更以下的因素fagent的数量并发线程数执行时长确实每次执行的总请求数为43518,每个sample的请求数为14.51k三、脚本确认3.1 csv数据文件配置查看jmx脚本,排除后最大可能出现问题的元件即CSV数据文件设置具体查看配置,可以原创 2021-04-15 08:41:54 · 375 阅读 · 0 评论 -
【JMeter】https请求时长连接的建立与保持
在链路nginx中http和https接口请求性能对比时:相同的客户端&并发线程发起服务端配置&节点一致服务端的处理逻辑均为判断某个字符串是否存在但是http和https的响应时间差异相差约12倍,如下图:在分析问题前,我们先看看HTTP和HTTPS两者访问的差异影响:协议交互所增加的网络 RTT(round trip time)加解密相关的计算耗时协议分析一、网络耗时增加用户使用 HTTP 协议首次访问如http://www.baidu.com时,网络上的交互原创 2020-12-14 22:17:25 · 5673 阅读 · 0 评论 -
【JMeter】dubbo接口java.util.List<MyClassVo>参数
参数格式使用jmeter编写性能测试脚本dubbo接口时,有这样的数据格式的参数java.util.List<com.swqa.resource.ui.dto.MaterialAddDto>其中 com.swqa.resource.ui.dto.MaterialAddDto 具体格式为:{ "name":"jmeter_save${__time(,)}", "storeSaveDto":{ "appId":"10104", "fileSize":6838276 },原创 2020-09-27 09:53:13 · 1898 阅读 · 0 评论 -
【JMeter】Arrivals Thread Group
在做性能测试之前,我们来了解一下JMeter多个不同线程组的应用。首先,JMeter提供了三个基本的线程组,分别为:Thread GroupsetUp Thread GrouptearDown Thread Group其他线程组可以通过集成插件的方式使用,包括:bzm - Arrivals Thread Groupbzm - Concurrency Thread Groupbzm - Free-Form Arrivals Thread Groupjp@gc - Stepping Thread原创 2020-07-13 13:21:28 · 1341 阅读 · 0 评论 -
【tsung】tsung模拟请求
环境搭建ok后我们开始使用tsung进行性能测试模板其实tsung提供了一系列的模板,包括所有tsung支持的服务类型的xml模板cd /usr/local/tsung/share/doc/tsung/examples/可以直接拷贝模板xml,稍微修改即可使用xml文件内容1. 客户端<clients> <client host="localhost" cp...原创 2020-04-24 21:36:24 · 436 阅读 · 0 评论 -
【tsung】tsung分布式运行
性能工具强大之处在于可支持分布式运行方式,做为性能测试工具的tsung也不例外,接下来搭建tsung的分布式测试环境tsung的分布式环境搭建需要完成以下配置:ssh无密登录集群的机器之间必须要实现无密码提示的ssh登录参与测试的机器中有一个是controller,其他都是tsung1、tsung2,集中控制的方式在主机中进入ssh目录cd /root/.ssh在主机中生成公...原创 2020-04-23 13:28:55 · 482 阅读 · 4 评论 -
【tsung】tsung安装与启动
运行环境安装安装 erlang、gnuplot、perl5erlang :因为Tsung是基于erlang开发的,所以得先安装这个环境.安装软件perl5:生成报表的脚本支持环境gnuplot:报表统计图片生成工具erlang安装方式一:apt-get install erlang erlang-src方式二:yum install erlang erlang-src验...原创 2020-04-22 21:26:54 · 456 阅读 · 0 评论 -
【locust】locust安装与启动
locust安装通过pip 安装locustpip install locustio需要预先安装python3和pip,这次在安装环境时遇到一些坑,环境中原本使用的python2.6,需要重新安装python3环境,这时候可以安装一个虚拟环境注:支持的python版本:2.7、3.4、3.5、3.6及以上虚拟环境安装命令安装了python的虚拟环境pip3 install ...原创 2020-04-22 19:56:00 · 2003 阅读 · 0 评论 -
【JMeter】固定吞吐量
新增一个需求,TCP长连接后每秒发2/5/10个数据包,持续3min那sleep 500ms/200ms/100ms是否可以解决这个问题呢?显然不行,忽略一个关键的点,TCP长连接,需要等待上一个包发送接收到响应后才能发送下一个数据包,这样就有一个不确定的因素,响应时间其实如果精确的话还有另外一个问题,JMeter在发送上一个数据包后到发送下一个数据包其实是有一个毫秒级别的线程切换间隔时间的那是否可以粗略估算,运行一次,查看平均响应时间,新sleep时间 = sleep时间 - 预计平均响应时间 -原创 2019-09-04 10:03:06 · 1951 阅读 · 0 评论 -
【JMeter】JMeter卡顿无响应
在尝试在千兆网络中使用控制端设备,看是否因为网络的问题引起将JMeter包和.jmx文件拷到小伙伴的台式机中准备进行验证运行时发现整个JMeter卡住不动开始怀疑是网段的原因,ping准备使用的10台客户端肉鸡和ping服务ip均没问题查看JMeter的配置文件 jmeter.properties,确认无误那将需要使用到的.csv文件拷到小伙伴做为控制端的电脑中,本地运行,本地运行没有问题是否因为多个网卡的原因?将其他网络禁用,仍是一样的现象,无任何响应那是否是防火墙的问题直接拦截了?把所有原创 2019-09-03 20:53:16 · 6962 阅读 · 0 评论 -
【JMeter】CSV文件配置
由于业务的需求,需要在一个JMeter脚本中起40个线程组,每个线程组都需要读取学校帐号做为登录的账号信息因为有10台客户端肉鸡,那需要切割400个csv文件进行配置,这样的工作量是非常繁琐的其中有个可以切入点,那就是每台肉鸡上取csv帐号可以是随机的,但是不同线程不能取相同的一个帐号,那能不能把CSV文件文件设置在和线程组同级进行,然后大家先后取该CSV文件呢?直接运行,发现每个线程都去读取该CSV文件,各不干扰,但是每个人都读取自己那份,这样导致读取了重复的帐号信息,未能满足需求那是否有啥方式原创 2019-09-03 20:43:28 · 543 阅读 · 0 评论 -
【locust】聚合报告无法显示
使用locust发起压测,但发现在web端并没有显示任何的聚合报告信息请求正确性首先得确认是否因为脚本请求异常导致没有数据,故在执行结果中打印日志日志中可以看到,均已正常请求浏览器问题是否因为浏览器不兼容渲染的问题导致?将IE修改成chrome浏览器,尝试之,仍无法显示在该环境下,之后尝试发现firefox浏览器可原生支持开发者工具再次查看开发者工具日志,发现报错信息具...原创 2020-04-17 20:28:13 · 2260 阅读 · 0 评论 -
【locust】通过ip访问失败
在做不同性能工具的性能对比时,使用到locust时,踩了一些坑,mark一下安装Locustpip install locustio 命令安装安装成功后可以输入 pip show locust 命令查看是否安装成功,以及通过 locust -help 命令查看帮助信息支持的python版本:2.7、3.4、3.5、3.6、3.7及以上版本一切就绪后,发现localhost:por...原创 2020-04-17 20:24:33 · 2142 阅读 · 4 评论 -
【JMeter】dubbo connection问题
在dubbo接口性能测试时,遇到一个十分焦急的问题,即运行脚本时,线程数正常起来,但是一直没有获取到执行的接口数据一直等待,直至3min时,出现返回接口请求数据,但是响应时间均大于180s,这个时候服务端并没有流量,说明请求失败问题排查并发的线程数太高导致? 将各个线程组的并发线程数都改成1,再次执行,此时仍出现以上现象jmx脚本中有15个线程组,是否多个线程组相互影响导致?将线程组改成1个,再次执行,以上现象仍然出现jmx脚本中该dubbo接口请求响应导致?将dubbo接口请求改成简原创 2020-03-26 13:43:17 · 3074 阅读 · 0 评论 -
【locust】locust与jmeter性能对比
现在开源和商业的性能测试工具层出不穷,如何选取一款高性能的性能测试工具,成为性能测试最基本需要解决的问题之一这篇文章主要针对locust与jmeter能提供的并发性能进行对比工作原理在对比前,我们先看看这两款开源软件的工作原理Locust的原意是蝗虫,原作者之所以选择这个名字,估计也是听过这么一句俗语,“蝗虫过境,寸草不生”Locust是一款易于使用的分布式负载测试工具,完全基于事件,即...原创 2020-04-18 16:31:36 · 1828 阅读 · 0 评论 -
【JMeter】dubbo枚举数据类型
在使用JMeter编写dubbo压测接口时,发现参数是枚举类型时出现错误代码中com.lluozh.api.UserProperty,是一个自定义的枚举类,该枚举有3个值:PHONE、SMS、EMAIl2020-03-03 20:01:55,635 ERROR i.g.n.j.p.d.s.DubboSample: Exception:org.apache.dubbo.rpc.RpcException: Failfast invoke providersdubbo://172.30.178.7:208原创 2020-03-03 20:30:40 · 2816 阅读 · 0 评论 -
【JMeter】fiddler如何抓取JMeter请求
JMeter请求接口,然后使用本地fiddler抓取请求的包,发现在fiddler中没有抓取到任何的数据开始怀疑是否因为请求的接口是https的原因,故将请求改为http接口,发现同样抓取不了任何数据但是在使用JMeter发送请求时,有时需要查看发送的请求是否合理,需要使用fiddler更直观的抓取并查看JMeter发送的请求原来是可以使用fiddler进行抓包,但需要针对fiddle和JMeter进行设置步骤如下:1.设置fidder-connections 端口号为88882.使用jmete原创 2019-10-16 20:57:31 · 3098 阅读 · 0 评论 -
【JMeter】分布式远程启动
在压测需求较大并发量时,如1000以上,但是单台客户端难以实现,因此需要多台客户端并行,并且能同步控制jmeter的分布式控制客户端机器作为一个控制器controller,控制多台slave机器的操作controller通过GUI界面启动slave机器,将jmeter压测发送给每台启动的slaveslave获得脚本后开始执行,slave本地不需预先存储脚本各台slave执行完成后,将结果传回给controller,controller收集整合显示远程服务器(slave)配置远程服务器(s原创 2017-01-17 21:27:56 · 8259 阅读 · 4 评论 -
【JMeter】集合点Synchronizing Timer
在做某一个项目的并发测试时,以为在0秒时起N个线程就是一个并发的请求在做另外一个项目并发测试才发现然而并不是这样的有一个业务流,业务流中有接口A、接口B、接口C、接口D现在做100个并发,即起100个线程,因为100个线程起来后,每个线程都是完成接口A后,接着进行接口B的请求,以此类推。可以发现,因为各个线程接口A请求响应的时间不一致,故100个线程对B接口的请求并不是同一个时刻点,接口C、接口D请求的时间也并不是一个时刻点此时,有一个性能的名词–集合点集合点:用以同步虚拟用户,以便恰好在同一时原创 2016-05-31 20:00:03 · 3884 阅读 · 0 评论 -
【JMeter】并发测试遇到问题点
在对一个项目进行接口测试时,现在总结一下碰到的几个问题:加密对于认证信息的加密方式是取请求参数中的几个参数构成字符串做为String然后进行加密处理,使用java进行加密实现,导出jar文件,BeanShell PreProcessor进行调用处理这里就不展开了。关于时间戳的问题在Post请求中有一个Parameter是时间戳,JMeter中时间戳的函数为${__time(,)} ,在预处理中也调用${__time(,)} 组成String进行加密,运行的时候出现错误,认证失败。后查看参数的值时发现原创 2016-05-14 23:13:14 · 2913 阅读 · 0 评论 -
【JMeter】资源文件接口请求
公司有一款产品,类似于视频在线学习的网站或论坛 现在计划使用接口请求模拟视频资源文件的请求请求抓包资源文件的url地址: http://Host/video%2Fgao1shuxue-shuliangji.mp4 注:Host地址用Host代替,下同因为没有写过这类型的接口请求,首先试着在网页端(清除缓冲)输入该url后,查看网络信息:发现有3个同样的接口进行请求,一个返回值是200,另外两个原创 2016-04-22 21:48:37 · 3962 阅读 · 0 评论 -
【JMeter】JMeterPlugin性能监控
在使用JMeter进行接口测试时,需要同步监控服务端的资源使用情况。因为如果在执行机器上使用表格和图形等监听器,占用内存太多,这样会影响执行机器的性能开始设计的方案是:服务器的性能监控的部分使用nmon去收集资源占用(在开始测试前加一个bash shell 前置处理器去启动nmon,结束后一样加bash shell后置处理器去结束nmon,然后用scp把.nmon文件传回监控机器)使用一个windows端的去做控制和结果收集,执行端的机器运行Jmeter,只用简单数据监听器,最后在在监控机器上去分析原创 2016-04-19 16:56:09 · 11668 阅读 · 1 评论 -
【JMeter】参数Parameters和Body Data
在做接口并发测试的时候,才发现Jmeter中的Parameters和Body Data两种参数格式并不是简单的一个是xx=xx,另外一个是json格式的参数先看一个接口[post] /api/xx/xxxx/xxxx 通知服务端文件上传完毕输入参数:http content type: application/json名称 | 类型 | 是否必须 | 参数限制 | 描述--------- | --原创 2016-05-31 19:03:56 · 69003 阅读 · 7 评论 -
【JMeter】JDBC获取数据库表数据作为参数
在接口请求时,需要验证请求数据的正确性,故考虑是否需要Jmeter从数据读取数据进行验证添加需要的驱动jar包使用不同的数据库,需要引入的jar包是不一样的 mysql:无需引入其他数据库驱动jar包 sql server:下载sqljdbc.jar包 oracle:oracle数据的安装目录下面的\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar其中添加jar原创 2016-09-29 21:38:33 · 12806 阅读 · 0 评论 -
【JMeter】sql查询&获取当前日期
在测试中,需要从数据库中sql语句查询获取数据与请求结果进行校验sql语句中,需要查询sr_rep_org 表格中的数据:该表的格式为:如下查询时:SELECT * FROM sr_rep_org WHERE date = '2016-10-10 09:57:07'获得的数据为:现在需要查询的是2016-10-09 的数据查询的语句为:SELECT * FROM sr_rep_org WHERE d原创 2016-10-10 10:37:53 · 4396 阅读 · 0 评论 -
【JMeter】accessToken
在写java后台接口时,碰到一个accessToken的问题,现在Mark一下设备管理_获取唤醒服务器 这个接口失败,响应数据为:{"data":"没有token","statusCode":401}让我们再看看请求参数不难发现accessToken 为空但是同一个接口请求这个请求中是带有 accessToken那问题在哪里呢?禁用两个接口中间的3个接口,请求的结果如下:那问题可能是中间三个接口有对 accessToken 的值进行了修改置空,查看各个接口的请求因为这个三个原创 2017-01-10 15:38:57 · 4245 阅读 · 0 评论 -
【JMeter】put方法参数
在接口编写时,PUT方法请求时响应的数据为:{"message":"","statusCode":500}实际请求的数据为不难发现PUT data竟然为空为了排除是Java后台的问题,使用Postman发送该PUT请求,如下:说明Postman请求是没问题,那么基本可以排除是被测的Java后台的问题如果将参数直接写在url上,是可以请求成功的请求的数据如下:响应数据为:{"statusCode":2原创 2017-01-10 16:59:10 · 18747 阅读 · 6 评论 -
【JMeter】初步使用(二)
之前我们抓包或使用API文档获取请求的参数,使用Jmeter模拟发包;使用正则表达式提取响应的相关数据,赋予变量做为之后请求的参数。JMeter中,在Http请求后我们需要验证服务器响应的数据是否正确,可以在每个请求下级加上响应断言判断响应数据中与断言条件是否一致,若不一致,即为错误。响应断言中可选择断言匹配的规则:包括、匹配、Equal、Substring等下面是我们登录业务的一个完整的请求例子用户在登录时,客户端向服务端发出了7个Http请求请求后,需要添加监听器监听测试的结果:让我们原创 2016-01-23 15:15:52 · 645 阅读 · 0 评论 -
【JMeter】初步使用(一)
JMeter请求:JMeter:模拟用户大量的并发的问题。应用部署到应用服务器上,用户做为个体发送请求给应用服务器,应用服务器会给用户返回请求。Jmeter模拟发送请求到应用服务器,检测发送请求后返回的值。一个Thread为一个用户。使用JMeter模拟EasiCare发送校园通知首先先看看开发提供的API文档http://seewoapi.gz.cvte.cn:3000/topic/54d4586635b2a08a39c9ef0bURL:host+[port]+/server +"/mess原创 2016-01-21 09:27:54 · 1063 阅读 · 0 评论 -
【JMeter】常见问题
JMeter的工作原理是什么?向服务器提交请求;从服务器取回请求返回的结果JMeter的作用?JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。 JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可 以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为User Par..原创 2015-10-13 10:13:07 · 951 阅读 · 0 评论 -
【JMeter】时间变量参数
在使用JMeter编写接口测试脚本参数化时,不可避免的使用时间变量,比如时间戳,比如当前时刻点,比如当前日期等等,现在将项目中遇到的一些情况列举一下__time函数时间变量,最简单易用的就是JMeter自带的__time函数调出函数助手,生成一个__time 函数调用时间戳参数变量13位时间戳${__time(,)} //默认该公式精确到毫秒级别, 13位数10位时间戳${__time(/1000,)} //该公式精确到秒级别, 10位数xx秒后10位时间戳${__intSum原创 2017-06-28 20:45:20 · 19924 阅读 · 0 评论 -
【JMeter】BeanShell断言之数据解析&数据库对比校验
有说到使用BeanShell进行响应断言校验,可以更加自主且可定制化的实现数据的校验,现在使用BeanShell断言解析数据后与数据库的数据进行对比校验接口返回值的正确性需要实现以上需求,首先需要数据库的连接,并取到数据库中的数据,解析相应的响应数据,并进行校验。由于JMeter的BeanShell断言编辑器比较简陋,现在在IDEA上实现创建项目后,我们需要导入两个jar包,一个是sql的jar包,一个是json的jar包下载OK后,使用IDEA创建项目,将这两个jar包导入到项目中(File –&原创 2017-06-02 21:53:16 · 11315 阅读 · 7 评论 -
【JMeter】BeanShell断言之数据处理
API接口测试中,对于接口请求respone的校验是非常重要的一个环节在使用Jmeter进行接口测试时,有多种respone校验方式,比如响应断言、BeanShell断言等等,BeanShell断言可以自定义断言,自由灵活的用脚本实现断言什么是BeanShell 小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法 运行其内部的脚本处理Java应用程序,还可以在运原创 2017-06-01 18:19:35 · 10123 阅读 · 8 评论 -
【JMeter】Parameters参数对象类型
在写一个接口时,该接口的参数规则如下://参数规则params: { deviceIds: ['string'], //* 选中的设备 channel: 'number', station: 'number|0', type: 'number', //假设选中了定时模式 timer: {原创 2017-05-25 14:53:09 · 2129 阅读 · 0 评论 -
【JMeter】计数器Counter
在写remote6接口候,在测试前需要进行测试分析并构造测试数据账号这些可以使用csv data config来实现还有一种不同进程需要不同的变量时,可以使用随机数 ${__Random} 其实还有一种蛮好用的Jmeter元素,即Counter(计数器)添加Counter(计数器)看看计数器的定义Allows the user to create a counter that can be ref原创 2017-01-14 12:18:51 · 32185 阅读 · 10 评论 -
【JMeter】JSON Extractor
JMeter处理responses 的json对于请求1返回的结果,处理以后作为请求2的参数,JMeter提供了正则表达式提取器如下:这样也可以通过正则表达式获取responses的某个值但是对于大部分请求返回的结果,都是json,有一个更方便使用的插件:JSON Extractor 不过得首先下载插件 https://jmeter-plugins.org/wiki/JSONPathExtrac原创 2017-01-05 20:07:12 · 33659 阅读 · 2 评论 -
【JMeter】Aggregate Report 解析
AggregateReport 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”如果大家都是做Web应用的性能测试,例如只有一个登录的请求,那么在Aggregate Report中,会显示一行数据,共有10个字段,含义分别如下。Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 N转载 2015-10-13 09:57:30 · 1446 阅读 · 0 评论