前言:

最近公司接了一个云上展会项目,合同里签订的是6w并发连接数和2w QPS的性能指标,还有监理单位,第三方评测单位。

唉,先吐槽一下,有了监理和评测,文档tmd一堆堆,严格按照软件开发来执行,写文档都得累死,对于经常只有概要设计,有时候概要设计都舍了的研发流程,哈哈 ~慢慢体会!

再加上一点,如果评测单位技术很牛皮,那确实能对项目有所帮组,但评测单位技术不行的话,那简直就是来捣乱,平添很多无用工作。

讲讲并发数的理解:

6w并发,也是无语,签合同时也没想到后续有多麻烦,估计当时没理解透彻并发连接数与连接数的概念。

并发连接数:每时刻连接到服务器的请求数,并没有时间单位,没有秒,毫秒的度量单位。比如6万并发,你服务器无时无刻都有6万请求连接。

所以1000并发连接数,可以有2w多的QPS或TPS。因为QPS或TPS是以秒为单位的,1秒内无时无刻的1000并发请求,就可以完成好几万的请求次数。

到这里,是不是认为6w并发很难完成,确实,到项目初验完成,我们只做了3w的并发,QPS倒可以轻松完成。

进入正题:

1. Locust的分布式压测,看过我博客之前的文章,应该了解,locust的分布式压测其实就是启动命令不同而已,和jemter、loadrunner不同的是,locust的master端不会主动把脚本

推送到slave服务器,需要自己把要执行的脚本拷贝到slave服务器上。

针对这点的话,可以在master执行脚本里把远程推送文件与远程执行命令加上,就可以搞定了,不用一台台服务器拷贝,再启动命令。

分布式执行命令:

master:

locust -f D:\thecover_project\api_locust\locust_view\kbh_api\locust_api\locust_bot_search.py --master --master-bind-port 9800 --headless -u 100 -r 20 --expect-worker 1 -t 2m -s 10 --step-load --step-users 100 --step-time 2m --csv D:\thecover_project\api_locust\resource\csv\locust_bot_search.py0922115120

slave:

locust -f D:\thecover_project\api_locust\locust_view\kbh_api\locust_api\locust_bot_search.py --master-host  10.111.53.123 --master-port 9800 --headless --worker

这里的ip就是master机器的ip(一般都是局域网内网IP)

执行压测的测试机部署图:

上面服务器CPU配置为8核16线程,非16核。一般locust一个CPU线程可以启动一个slave。一台机子可以启动16个,当然,启动12,到15个最好,都启动的话,电脑后边很卡,cpu90%会主动丢失该slave。

执行完成后自动生成报告(之前文章有介绍报告生成)。

通过这样的分布式压测,页面的QPS一般很轻松达到5w左右,接口的看服务器配置和接口业务复杂度,一般也能达到3w的qps。

其实研究透locust后,你会发现命令参数里-U也可以叫做并发数,前提是wait time要设置为0,不设置等待时间(思考时间)。这样才能保证无时无刻发起-U后的用户数。

2. Jemter的分布式压测

jemter的自带有分布式压测:Controller(主控机)、Agent(代理机),我用的是最新版(5.3)版本,分布式配置和4.x略有区别。

在Controller主机上修改jmeter.properties配置文件:

1).找到remote_hosts=,把Agent服务器的ip:端口,维护进去,如:192.168.0.1:1099,192.168.0.2:1099,102.168.1.3:1099

2).找到server.rmi.ssl.disable=false,修改为server.rmi.ssl.disable=true

3)找到jmeter.bat,运行启动主控机

在Agent主机上修改jmeter.properties配置文件:

1).找到server.rmi.ssl.disable=false,修改为server.rmi.ssl.disable=true

2)找到jmeter-server.bat,运行启动代理机

Controller机和Agent机,端口默认是1099,若要修改端口,可以在jmeter.properties找到“server_port=”修改端口即可
最后在Controller机jemter上,“运行”-->"远程启动",一台台启动,也可以"运行"-->"远程启动所有",这样分布式压测就启动ok了,压测脚本会自动推送到Agent服务器上执行,不做其他配置。

3.Loadrunner的分布式压测

Loadrunner的分布式压测最简单了,所有机子安装好Loadrunner后,主控机在run load tests 里点击 load generators里添加负载机的ip即可;

添加完后,选择connect尝试连接,若status状态为ready即认为连接上了,然后你可以灵活配置这些负载机:

在上图的第5列那可以选择具体ip,或者所有ip执行脚本,也可以添加多个脚本,分别在不同的ip上执行,这里都可以灵活配置。

loadrunner的界面操作这些还是很强大的,不愧是性能测试工具里的标杆。但是loadrunner的缺点也很多,比如最大的缺点就是收费,当然,你可以使用破解版,另外就是loadrunner和jemter一样,很耗CPU,

其次就是分析报告生成很慢很慢,如果你压测的数据几亿条,光分析报告生成都需要差不多一个小时。

以上就是目前比较流行的压测工具分布式压测部署配置方法。

总的来说,这几款压测工具都还可以,如果不是被评测公司要求使用loadrunner的话,常规的开源压测工具是首选,loadrunner安装都需要安装大半天,完了还得破解啥的,总之loadrunner感觉太重了。

文末送上loadrunner11的安装包下载地址和破解dll和证书id。

用迅雷下载:http://www.genilogix.com/downloads/loadrunner/loadrunner-11.iso

破解文件:https://download.csdn.net/download/tengdakuaijie1/12880665

有问题的欢迎交流。

Locust QQ 群:

Locust、Jemter、Loadrunner三种工具的分布式压测的更多相关文章

  1. Loadrunner三种post格式的请求

    Loadrunner三种post格式的请求 web_custom_request intweb_custom_request(const char *RequestName, <List of ...

  2. jemter 分布式压测

    1.测试机搭建 首选 压力机A,压力机B,压力机C, 压力机A作为控制台 压力机B,压力机C作为分布式的测试机 压力机Aip:172.16.23.69, 压力机Bip:192.168.184.128 ...

  3. 案例 | 荔枝微课基于 kubernetes 搭建分布式压测系统

    王诚强,荔枝微课基础架构负责人.热衷于基础技术研发推广,致力于提供稳定高效的基础架构,推进了荔枝微课集群化从0到1的发展,云原生架构持续演进的实践者. 本文根据2021年4月10日深圳站举办的[腾讯云 ...

  4. jmeter(二十七)分布式压测注意事项

    之前的博客:jemter(二十三):分布式测试简略的介绍了利用jmeter做分布式测试的方法,当时只是介绍了背景和原因,以及基本的配置操作,有同学说写得不够详细. 正好今年双十一,我司的全链路压测,也 ...

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

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

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

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

  7. 实现理论上无tps上限的分布式压测(基于Jmeter+InfluxDB+Grafana+Spring Boot)

    JMeter自身带有Master-Slave压测框架,对于并发量不是很高的压力情况下(比如tps低于5000),该方案是可行的,并且使用起来非常方便,只要在配置文件或者命令行工具的参数做一些补充,即可 ...

  8. jmeter进行分布式压测过程与 注意事项

    jmeter命令行运行但是是单节点下的, jmeter底层用java开发,耗内存.cpu,如果项目要求大并发去压测服务端的话,jmeter单节点难以完成大并发的请求,这时就需要对jmeter进行分布式 ...

  9. jmeter分布式压测

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

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

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

随机推荐

  1. 一文搞懂Vue的MVVM模式与双向绑定

    v-model 是 Vue.js 框架中用于实现双向数据绑定的指令.它充分体现了 MVVM(Model-View-ViewModel)模式中的双向数据绑定特性.下面我们将详细解释 v-model 如何 ...

  2. isNumber 数字正则校验 表达式

    isNumber 数字正则校验 表达式 isNumber(value) { return (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)|(^-?0{1}$)/).t ...

  3. vue 动态加载css,改变网站皮肤模式

    Vue.mixin({ created () { require('view-design/dist/styles/iview.css') } }) 参考资料:https://blog.csdn.ne ...

  4. Jetpack架构组件学习(0)——总结篇

    原文地址:Jetpack架构组件学习(0)--总结篇 | Stars-One的杂货小窝 对之后学习的Jetpack架构开发优点进行简单总结,及对应的文章分类链接 LifeCycle 主要解决将一些初始 ...

  5. gulp-imagemin版本9图片压缩

    由于网上大多数的博文已经比较久,参考性不大 版本 gulp PS D:\XXX\github\hexo> gulp -v CLI version: 2.3.0 Local version: 4. ...

  6. 前后端分离Ajax入门

    前后端分离之Ajax入门 一.概念 Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信 ...

  7. 纯前端实现 PNG 图片压缩 | UPNG.js

    在线 Demo 体验地址 →: https://demos.sugarat.top/pages/png-compress/ 前言 最近在迭代自己的 图床 应用,由于使用时间的累计,存储空间占用越来越大 ...

  8. Lambda Web Browser使用教程

    Lambda web browser是一个功能强大的UE内置浏览器插件, 允许用户在编辑器模式和运行时启动一个浏览器窗口, 对于一些采用传统BS架构的项目而言, 控制页面都放在前段, 若想要将控制页面 ...

  9. 记录-Symbol学习笔记

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 Symbol是JavaScript中的原始数据类型之一,它表示一个唯一的.不可变的值,通常用作对象属性的键值.由于Symbol值是唯一的, ...

  10. Java中split的用法及一个金典入坑题目

    split() 方法根据匹配给定的正则表达式来拆分字符串. 注意: . . $. | 和 * 等转义字符,必须得加 \\. 注意:多个分隔符,可以用 | 作为连字符. 语法 public String ...