在使用jmeter压测过程中,可能会度遇到内存溢出的错误,这是为什么呢?因为jmeter是java写的应用,java应用jvm堆内存heap受负载机硬件限制,虽然我们可以调整堆内存大小,但是单机无法支撑数以万计大并发,此时,需要多个负载机进行分压测试,这样性能瓶颈就不会是我们的负载机了。

分布式的原理

jmeter分布式压测时,选择其中一台作为控制机,其余的机器做为负载机,执行时,控制机会把脚本发送到每个负载机上,负载机获取到脚本就执行脚本(负载机只需要启动jmeter-server.bat或者jmeter-server),执行后,负载机回传执行结果给控制机,控制机会进行汇总。值得注意的是:如果请求执行成功,不会回传请求的响应信息,所以在查看结果树中, 响应结果看到是空的。

原理图(截图自官网)

http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

分布式压测注意事项

摘抄自官网:

http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

看不懂英文的自己翻译哦,看懂了,少踩坑。

保证控制机和负载机上jdk、jmeter版本一样,否则会出一些意外的问题;关闭防火墙:service iptables stop,可以先看防火墙状态,如果是关闭的,就不用管了。

分布式环境搭建说明

由于机器数量的原因,我这里演示windows既作为控制机,又作为负载机,另外一台负载机是我的linux虚拟机。但是控制机会接收负载机回传的结果数据,所以自身有性能消耗,最好是负载机单独一台机器。

还有这样有个问题,如果有参数化文件,需要拷贝到每台负载机上,路径要一样,而windows和linux上路径肯定是不一样的,所以,负载机要么都是windows,要么都是linux,为了演示简单,我的脚本就不用参数化文件了,且这里演示rmi传输机制使用ssl方式。

仅linux服务器作为负载机

bin目录下执行./jmeter-server

解决办法:./jmeter-server -Djava.rmi.server.hostname=192.168.116.128

不管是负载机还是控制机(如果控制机也作为负载机),执行jmeter-server.bat(linux下执行jmeter-server,另外:linux下检查是否启动成功:ps -ef | grep jmeter-server),报如下错,是因为从JMeter 4.0开始,RMI的默认传输机制将使用ssl。SSL需要密钥和证书才能工作,不使用ssl将存在安全漏洞。下面提示缺少jsk文件

在控制机bin目录下,点击:create-rmi-keystore.bat

根据提示一直填下去,遇到Yes与No就直接填y,然后回车就ok了

回车后生成文件:rmi_keystore.jks

复制控制机生成的rmi_keystore.jks到每一台负载机jmeter的bin目录下

负载机配置文件中,修改端口号

搜索jmeter-server

默认端口1099

端口号修改为2099

执行jmeter-server

控制机telnet负载机,看端口通不通

telnet通了

控制机配置文件

配置负载机

测试脚本

关于下面的监听器:查看结果树,主要是用于调试脚本的时候用,调试好后,把这个监听器禁用掉;压测过程中,可以看聚合报告,如果有失败的请求,可以马上远程连接服务器查看错误日志;但是,如果没有远程服务器的权限,就可以不禁用这个监听器,但是要勾选“仅错误日志”

3个线程,运行5次,总共15次

远程启动linux负载机

取样器结果

请求

响应数据为空

而且,哪怕勾选保存结果,查看结果树中依旧没有结果,这可能是jmeter本身的设置,因为如果回传大量数据,会影响性能结果

聚合报告,3个线程,运行5次,总共15次

负载机控制台输出的信息

仅windows控制机作为负载机

windows和linux同时作为负载机

至此,jmeter5.1分布式压测环境搭建完成。

然后就可以设置线程,跑并发了,比如并发200线程,每秒启动20个线程,并发运行15分钟

通过非GUI命令行方式远程启动

多负载机

jmeter -n -t 脚本绝对路径名.jmx -l 要保存的结果绝对路径名.jtl -R 192.168.116.128:2099,192.168.56.1

其实,在实际压测的时候是较少使用命令行方式的,因为看不到tps波动情况,一般来说,如果有大的波动,是需要立即连接服务器查看各个资源的情况的,比如线程池、连接池,虽然命令行执行完后会生成jtl结果文件,但是压测完,压测过程中创建的各种连接都释放了,也就无法定位到问题了,如果有失败的请求还好点,这样可以根据错误日志来分析定位问题。

总之,性能测试的重点及难点是:监控、分析、定位、调优。

PS:以上内容仅供参考,如有错误,欢迎指正

转载自:51testing群分享

jmeter5.1分布式压测的更多相关文章

  1. JMeter分布式压测实战(2020年清明假期学习笔记)

    一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...

  2. jmeter分布式压测

    stop.sh需要跑Jmeter的服务器上安装Jmeteryum install lrzsz 安装rz.sz命令rz jemter的压缩包 拷贝到/usr/local/tools下面unzip apa ...

  3. jmeter 分布式压测(Linux)

    之前一篇博文写的是如何在Linux上使用jmeter压测,这篇介绍下Linux上jmeter的分布式压测. 和windows上的分布式类似,需要配置agent节点和控制机 一.Agent节点配置 1. ...

  4. jmeter 分布式压测(windows)

    单台压测机通常会遇到客户端瓶颈,受制于客户机的性能.可能由于网络带宽,CPU,内存的限制不能给到服务器足够的压力,这个时候你就需要用到分布式方案来解决客户机的瓶颈,压测的结果也会更加接近于真实情况. ...

  5. Jmeter 在linux下的分布式压测

    Jmeter 在linux下的分布式压测 0.将 windows机器作为master 控制机(同时也兼做负载机slave), linux机器作为 负载机 slave. 1.linux环境安装 : (1 ...

  6. 分布式压测系列之Jmeter4.0第一季

    1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...

  7. JMeter在linux上分布式压测步骤(二)

    哈喽,我又来了~ 前提:三台linux虚拟机,一台作为master,另外两台作为slave. 一.server端 1.修改1099端口,client和server通信的端口,可以不修改,默认就是109 ...

  8. jmeter实现分布式压测步骤

    环境说明:安装与控制机相同版本的jdk与jmeter 1.修改控制机中的jmeter.properties文件 将<remote_hosts=127.0.0.1>改为<remote_ ...

  9. Linux环境下进行分布式压测踩过的坑

    背景:公司为了满足大并发的情况,需要测试组配合,就需要分布式压测,这里我把我踩过坑都记录下来: 环境:Linux + jmeter-v.5.1.1;使用3台2核4G的压力机: Q1: Server f ...

随机推荐

  1. python 小数据池 深浅拷贝 集合

    1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同 ...

  2. 关于APICloud与DCloud的我的一些看法

    最近因为项目需要,研究了一下市场较为流行的四种移动开发平台:Wex5.APPcan.Dcloud.APICloud,Wex5因为界面UI较为老旧,且语法和js有较大出入,APPcan不开源等缘故,主要 ...

  3. Eclipse修改JSP文件的默认编码

    Eclipse新建JSP文件,可以看到默认使用的是ISO-8859-1编码,如下图,而这种编码是无法保存中文的,不符合我们的需求 那么应该怎样修改呢?找到菜单Window-Preferences,找到 ...

  4. C++:基本类型的转换

    C++:基本类型的转换 一.string转为int [参考:https://blog.csdn.net/m0_37316917/article/details/82712017] string num ...

  5. 【香甜的黄油 Sweet Butter】

    [香甜的黄油 Sweet Butter] 洛谷P1828 https://www.luogu.org/problemnew/show/P1828 JDOJ 1803 https://neooj.com ...

  6. 第九章 基于HTTP的功能追加协议

    第九章 基于HTTP的功能追加协议 通过在HTTP的基础上添加新的功能来提高性能和功能. 一.消除HTTP瓶颈的SPDY SPDY(SPeeDY)目的是提高HTTP性能,缩短Web页面的加载时间(50 ...

  7. bioawk

    https://github.com/lh3/bioawk 1.基本思想 使用: usage: bioawk [-F fs] [-v var=value] [-c fmt] [-tH] [-f pro ...

  8. SpringCloud微服务常见组件理解

    概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...

  9. 【BZOJ3534】[SDOI2014] 重建(矩阵树定理)

    点此看题面 大致题意: 给你一张图,每条边有一定存在概率.求存在的图刚好为一棵树的概率. 矩阵树定理是什么 如果您不会矩阵树定理,可以看看蒟蒻的这篇博客:初学矩阵树定理. 矩阵树定理的应用 此题中,直 ...

  10. MODBUS协议入门(转载)

    http://blog.sina.com.cn/s/blog_65ba9a5e0101df1g.html