• Jmeter(一)分布式性能测试


    背景

    因工作需要,最近在学习Jmeter工具,网上有很多比较全面的Jmeter入门指南,我是看老张的博客入门的,博客风格简洁明了,看完受益匪浅,会跟老张好好学习。

    (老张博客传送门:https://www.cnblogs.com/imyalost/p/5790268.html)

    因为很多基础内容老张的博客都有些,我就不复制粘贴了,就写写我自己在实践中踩过的坑。

    一、Jmeter分布式测试的使用背景

    一般配置下,jmeter支持并发数大概在300-500,再大的话,可能出现线程排队和阻塞,即非并发情况,甚至造成卡顿、无响应等情况,当需要模拟大量的并发请求,单台jmeter就无法满足,可以通过分布式测试,即将并发请求分配给多台jmeter,来满足这种大规模的并发请求需求。

    二、Jmeter分布式测试原理

    引用老张的话:

    1、分布式测试中,选择一台作为管理机(Contorller),其他的机器作为测试执行的代理机(Agent);

    2、执行测试时,由Contorller通过命令行将测试脚本发给Agent,然后Agent执行测试(不需要启动GUI),同时将测试结果发送给Contorller;

    3、测试完成,可以在Contorller上的监听器里面看到Agent发来的测试结果,结果为多个Agent测试结果汇总而成;

    三、Jmeter分布式测试步骤

    1、假设三台电脑IP为192.168.10.1、192.168.10.2、192.168.10.3,将192.168.10.1作为管理机(Contorller),其他两台作为代理机(Agent)

    2、给三台电脑配置相同版本的JDK和Jmeter,JDK的安装教程可以自己搜索,Jmeter下载好之后直接解压到想要的路径下,一般是不需要配置JMETER_HOME环境变量的。

    3、修改Contorller的Jmeter.properties文件,修改“remote_hosts=127.0.0.1”,如果Contorller仅收集数据,不执行测试计划,则修改为:remote_hosts=10.82.25.28:1099,10.82.25.30:1099

    如果Contorller也要执行测试计划,则修改为:remote_hosts=127.0.0.1,10.82.25.28:1099,10.82.25.30:1099

    4、修改三台电脑的Jmeter.properties文件,修改“server.rmi.ssl.disable”,将其值改为true,即server.rmi.ssl.disable=true(记得要去掉#号这个语句才能生效)关闭ssl功能

    5、在两台Agent机各自启动:jmeter-server.bat,正常启动会在命令窗口显示  “Found ApacheJMeter_core.jar   Createred remote object:。。。”  等信息

    6、在Contorller机启动:jmeter.bat,打开测试计划(Test Plan),点击“运行(Run)-远程启动(Remote start)”,可以选择启动某个机,也可以启动全部

    7、已启动的机会在命令窗口打印出    “Starting the test on host。。。”   等信息

    四、配置过程中遇到的问题

    1、Agent机启动:jmeter-server.bat,显示“could not find ApacheJMeter_core.ja”

    方案:其实后面又显示“Found ApacheJMeter_core.jar”  = 。=   所以其实是没有问题的,如果还是想要一开始就显示“Found ApacheJMeter_core.jar”,那么就配置JMETER_HOME:

    新建环境变量,比如我的:JMETER_HOME=C:\Users\Administrator\Desktop\apache-jmeter-4.0  (即jmeter根目录),然后编辑Path变量,在后面添加  %JMETER_HOME%\bin  记得与前面的路劲要用分号:隔开

    2、Agent机启动:jmeter-server.bat,显示“java.io.FileNotFoundException:rmi_keystore.jks(系统找不到指定文件)”

    方案:修改“server.rmi.ssl.disable”,将其值改为true(一开始配置的时候我没有修改这个所以报错了)

    3、Controller机远程启动Agent机报错:Conne refused host:

    方案:这个出错的可能性很多,可以检查一下防火墙有没有关掉(需要关掉防火墙),检查端口有没有被占用:tasklist | findstr "1099",检查电脑是否存在多网卡。

    我这里出错的原因是Controller机没有修改“server.rmi.ssl.disable”为true

  • 相关阅读:
    揭秘重度MMORPG手游后台性能优化方案
    算法:贪心、回溯(su)、分治、动态规划,思想简要
    表单提交 curl和浏览器方式
    mysql 聚集索引,非聚集索引,覆盖索引区别。
    虚拟机中的Linux不能上网
    第二篇 界面开发 (Android学习笔记)
    第一篇 入门必备 (Android学习笔记)
    C/C++知识补充 (1)
    向后/向前引用, 零宽断言, 转义, 命名分组
    C/C++知识补充(2) C/C++操作符/运算符的优先级 & 结合性
  • 原文地址:https://www.cnblogs.com/cyanlee/p/9773473.html
Copyright © 2020-2023  润新知