Jmeter多台机器并发请求实现压力性能测试

工作需要开始研究前置服务的压力性能测试,最后选定用jemeter工具,先用本机跑一万个用户,电脑直接蓝屏,通过研究发现当需要模拟数多达上万的并发用户时,使用单台电脑(CPU和内存)可能无法支持,会将程序跑崩溃,或是引起JAVA内存溢出。

由于jemeter本身就是java语言编写,就会耗费电脑的一部分内存,个人工作电脑的配置:16.00G内存,可以大概达到5000-8000左右的并发数量。这个还是这台电脑没有其他应用程序占用内存的情况,如电脑使用中已经将内存消耗很大,基本一台电脑来做性能测试是很快会将电脑跑崩溃。

我是本机上还装了loadrunner等测试工具,电脑简直是巨慢,当环境无法提供我们更好地硬件,我们只能选择其他的方式进行测试,通过这种方式暂时缓解了我的困扰,不过在测试中还有未突破的新问题需解决,一直在研究。

一、配置代理机:

1、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=XXX.XXX.XX.XXX:XXXX(XXX.XXX.XX.XXX:XXXX指的是这台电脑的ip地址,不知道的情况下,可以cmd-ipconfig命令查看),端口可自定义。

2、启动jmeter-server.bat文件,就设置完成了。

3、注意如需要将控制机也作为向服务器发送请求的机器,最好也将本地的jmeter-server.bat启动(如使用命令执行远程机器启动的话也需要打开)

二、配置主控制机:  

1、打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=XXX.XXX.XX.XXX:XXXX,XXX.XXX.XX.XXX:XXXX(XXX.XXX.XX.XXX:XXXX指的是这台电脑的ip地址,不知道的情况下,可以cmd-ipconfig命令查看),端口可自定义。有多台代理机机器就将全部的地址配置在这个地方,中间用逗号相隔。

打开文档后(用txt文本打开就阔以)用Ctrl+F快捷键搜索host,就能够快速定位这个remote hosts参数配置的地方,输入地址端口号逗号隔开即可。

2、打开jmeter-server.bat文件,设置完成,启动运行起来就像下图的日志一样,会弹出开始结束等日志。

三、添加线程组和请求(以TCP请求为例,也可以是任何其他请求如Http请求等)查看结果:

1、启动jmeter,添加线程组线程数设置10个线程数,循环3次,就是每台机器发送10*3=30个请求。

2、远程启动,可以选择一台电脑运行,远程全部启动就会运行全部机器。

3、聚合报告,每台电脑设置的线程数为10,举例如2台电脑,所以是2*30=60个线程数。

声明: 以上只是一些简单的配置环境的方式,没有涉及到任何技术,仅供参考。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Web Jmeter–接口测试工具详解

    关于Jmeter性能测试工具不再过多介绍.如果你要学习软件性能测试,那么多少应该会对它有所耳闻. 强烈建议阅读官方文档学习:http://jmeter.apache.org/index.html 还有比这个更权威更全面的介绍Jmeter工具使用的么? 不过,此处要介绍是用它来做接口测试. 一.安装Jmeter                      Jmeter官方首页:http://jmeter.apache.org/ 关于Jmeter可以做什么,官方上也有非常详细的介绍.另外它的文档也写很

  • 基于Jmeter生成测试报告过程图解

    相对于Loadrunner,Jmeter其实也是可以有测试报告产出的,虽然一般都不用(没有Loadrunner的报告那么强大是一方面),还是顺手写一下吧,其实方法在用命令运行jmeter的时候就已经说明了 1. 准备脚本文件 2.cmd中运行一下命令 - -jmeter-n-t test.jmx(脚本的绝对路径) -lresult.jtl(自定义的名称) -e-o \tmp\result_report(测试报告的绝对路径)例:jmeter -n -t C:\Users\ZC\Desktop\te

  • Jmeter非GUI模式运行分布式测试

    一.简单的命令 -n 在非 GUI 模式下运行JMeter -t 要运行的 JMeter 测试脚本文件 -r 远程执行启动全部代理机 -H 代理机器地址ip如:192.168.1.1 -P 代理机器端口号如:8080,可自定义,默认的是1099 -l 生成记录结果文件 -e 结束运行,生成报告 -o 报告存放地址 -h 帮助 -> 打印出有用的信息并退出 举例: 情况一:在非 GUI 模式下运行JMete并运行tcp.jmx脚本文件 jmeter -n -t D:\apache-jmeter-3

  • Jmeter对接口测试入参实现MD5加密

    一.自带函数助手MD5加密 在函数助手中找到__MD5这个函数,第一个参数是要md5加密的值,第二个参数是保存加密后值的变量 在请求参数中引用该函数 发送请求可以看到密码加密了 二.beanshell脚本md5加密 在jmeter的lib目录下,自带commons-codec-1.11.jar(如果没有,可以到maven库下一个,下载地址: https://mvnrepository.com/,然后放到jmeter的lib目录下),所以,可以借助apache工具类DigestUtils实现. b

  • Jmeter 中 CSV 如何参数化测试数据并实现自动断言示例详解

    当我们使用Jmeter工具进行接口测试,可利用CSV Data Set Config配置元件,对测试数据进行参数化,循环读取csv文档中每一行测试用例数据,来实现接口自动化.此种情况下,很多测试工程师只会人工地查看响应结果来判断用例是否通过. 其实我们同样可利用CSV Data Set Config来帮助我们实现自动断言. 思路:将每一条用例的预期结果一并保存在csv文档中,循环读取文档中的期望结果,来跟实际运行的结果进行一致性判断,高效实现接口自动化. 示例: 1.整理测试数据及预期结果的CS

  • Jmeter HTTPS接口测试证书导入过程图解

    python中没有swich..case,若要实现一样的功能,又不想用if..elif来实现,可以充分利用字典进行实现 主要是想要通过不同的key调用不同的方法,在学习过程中,发现不管输入的key是什么,只要字典中存在输出内容,每次都会输出,这跟自己需要的功能有出入. 通过调试后,发现问题主要出现在key值对应的value的方法名有没有带()有很大的关系,如下: 不管bb中的number填写的是多少,总是会输出123 如果把cs()改为cs,那么只有在调用2的时候才会输出123:或者改下retu

  • Jmeter分布式压力测试实现过程详解

    一.分布式压测原理 如下图(这个图说明的是要一台控制机,然后由这台控制机发压测脚本到每台远程执行机,然后由控制机收集执行机结果) 二.修改 Jmeter 配置文件 在主控机的jmeter的bin目录找到配置文件jmeter.properties.找到里面的remote_hosts 部分,修改内容为:remote_hosts=xx,xx代表的是压力机的ip:port.如果是多个压力机,之间使用[,]分隔 控制机端口修改,防止端口被占用(注意:控制机修改后,每台执行机的端口也要修改成一致) 电脑防火

  • Jmeter多用户并发压力测试过程图解

    jmeter多用户并发压力测试可用CSV Data Set Config (添加--配置元件--CSV Data Set Config) Filename: 文件的位置(如果是同目录下csv文件,可不填写路径,写名称即可) Variable Names: 变量名称.多个变量用 , 或者 ; 隔开 Recycle on EOF:文件结束后是否要循环 Stop thread on EOF(文件结束是否中止线程) File Encoding: 默认为ANSI Allow Quoated data: 双

  • Jmeter多台机器并发请求实现压力性能测试

    工作需要开始研究前置服务的压力性能测试,最后选定用jemeter工具,先用本机跑一万个用户,电脑直接蓝屏,通过研究发现当需要模拟数多达上万的并发用户时,使用单台电脑(CPU和内存)可能无法支持,会将程序跑崩溃,或是引起JAVA内存溢出. 由于jemeter本身就是java语言编写,就会耗费电脑的一部分内存,个人工作电脑的配置:16.00G内存,可以大概达到5000-8000左右的并发数量.这个还是这台电脑没有其他应用程序占用内存的情况,如电脑使用中已经将内存消耗很大,基本一台电脑来做性能测试是很

  • php处理抢购类功能的高并发请求

    本文以抢购.秒杀为例.介绍如何在高并发状况下确保数据正确. 在高并发请求下容易参数两个问题 1.数据出错,导致产品超卖. 2.频繁操作数据库,导致性能下降. 测试环境 Windows7 apache2.4.9 php5.5.12 php框架 yii2.0 工具 apache bench (apache自带高并发请求工具). 通常处理方法 从控制器可以看出代码思路.先查询商品库存.如果库存大于0 ,则库存减少1,同时生产订单,录入抢购者数据. // 常规代码处理高并发 public functio

  • 使用JMeter进行接口高并发测试的实现

    目录 官网 启动 操作步骤 一般的网络接口测试,功能性测试postman较为好用,需要测试高并发的情况下,可以用Jmeter来进行测试,postman是串行,而Jmeter可以多线程并行测试. 官网 Apache JMeter - Apache JMeter™ 启动 进入到安装目录的bin目录下,然后双击jmeter.bat 操作步骤 1.新建Test Plan,起名为接口高并发测试 2. 选中测试计划,添加线程组 (右键-->添加-->Threads(Users)-->线程组) 3.设

  • 让Win2008+IIS7+ASP.NET支持10万并发请求

    今天下午17点左右,博客园博客站点出现这样的错误信息: Error Summary: HTTP Error 503.2 - Service Unavailable The serverRuntime@appConcurrentRequestLimit setting is being exceeded. Detailed Error Information: Module IIS Web Core Notification BeginRequest Handler StaticFile Erro

  • Javaweb应用使用限流处理大量的并发请求详解

    在web应用中,同一时间有大量的客户端请求同时发送到服务器,例如抢购.秒杀等.这个时候如何避免将大量的请求同时发送到业务系统. 第一种方法:在容器中配置最大请求数,如果大于改请求数,则客户端阻塞.该方法有效的阻止了大量的请求同时访问业务系统,但对用户不友好. 第二种方法:使用过滤器,保证一定数量的请求能够正常访问系统,多余的请求先跳转到排队页面,由排队页面定时发起请求.过滤器实现如下: public class ServiceFilter implements Filter { private

  • PHP使用curl_multi实现并发请求的方法示例

    本文实例讲述了PHP使用curl_multi实现并发请求的方法.分享给大家供大家参考,具体如下: class CurlMultiUtil { /** * 根据url,postData获取curl请求对象,这个比较简单,可以看官方文档 */ private static function getCurlObject($url,$postData=array(),$header=array()){ $options = array(); $url = trim($url); $options[CUR

  • asp.net通过消息队列处理高并发请求(以抢小米手机为例)

    网站面对高并发的情况下,除了增加硬件, 优化程序提高以响应速度外,还可以通过并行改串行的思路来解决.这种思想常见的实践方式就是数据库锁和消息队列的方式.这种方式的缺点是需要排队,响应速度慢,优点是节省成本. 演示一下现象 创建一个在售产品表 CREATE TABLE [dbo].[product]( [id] [int] NOT NULL,--唯一主键 [name] [nvarchar](50) NULL,--产品名称 [status] [int] NULL ,--0未售出 1 售出 默认为0

  • Python并发请求下限制QPS(每秒查询率)的实现代码

      前两天有一个需求,需要访问某API服务器请求数据,该服务器限制了QPS=2(哈哈应该都知道是哪个服务器了吧_(:з」∠)_),因为QPS很小所以就使用阻塞式请求.后来开通了服务,QPS提高到了20,阻塞式请求满足不了这个QPS了,于是使用了GRequests来并发请求数据,但这里又遇到了一个问题:并发太快,服务器通过发送错误码拒绝了很多数据的响应,造成了资源的浪费.   故在此记录以下几种 节流(Throttle) 方法:   以下均假设有如下包和数据前提: import grequests

  • 在vue项目中promise解决回调地狱和并发请求的问题

    场景需求: 需要同时请求5个接口 都请求成功后执行下一步操作 解决方法: 定义一个变量i=5,请求成功一个接口,让i–,直到i=0时执行下一个操作,否则不执行 axios.all 并发请求,.then(axios.spread(function(callback1, callback2)){}) promise.all 并发请求,.then(function([callback1, callback2]){}) 1.回调地狱: 函数作为参数层层嵌套 代替的为.then的链式操作 2.promis

  • Redis原子计数器incr,防止并发请求操作

    一.前言 在一些对高并发请求有限制的系统或者功能里,比如说秒杀活动,或者一些网站返回的当前用户过多,请稍后尝试.这些都是通过对同一时刻请求数量进行了限制,一般用作对后台系统的保护,防止系统因为过大的流量冲击而崩溃.对于系统崩溃带来的后果,显然还是拒绝一部分请求更能被维护者所接受. 而在各种限流中,除了系统自身设计的带锁机制的计数器外,利用Redis实现显然是一种既高效安全又便捷方便的方式. 二.incr命令 Redis Incr 命令将 key 中储存的数字值增一. 如果 key 不存在,那么

随机推荐