zoukankan      html  css  js  c++  java
  • Locust、Jemter、Loadrunner三种工具的分布式压测

    前言:

    最近公司接了一个云上展会项目,合同里签订的是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: hecover_projectapi_locustlocust_viewkbh_apilocust_apilocust_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: hecover_projectapi_locust esourcecsvlocust_bot_search.py0922115120

    slave:

    locust -f D: hecover_projectapi_locustlocust_viewkbh_apilocust_apilocust_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

    有问题的欢迎交流。

  • 相关阅读:
    Java 中的四种引用
    vue 移动端的开发
    使用java语言实现一个动态数组(详解)(数据结构)
    深度长文回顾web基础组件
    告诉你如何回答"线上CPU100%排查"面试问题
    超实用的mysql分库分表策略,轻松解决亿级数据问题
    【源码解析】凭什么?spring boot 一个 jar 就能开发 web 项目
    java中的守护线程
    Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
    spring-data-redis-cache 使用及源码走读
  • 原文地址:https://www.cnblogs.com/drewgg/p/13712916.html
Copyright © 2011-2022 走看看