zoukankan      html  css  js  c++  java
  • Jmeter分布式压测

     一、原因

      1、当你想并发很大的时候(比如3000)那么一台jmeter可能就不能胜任了,这时候就需要多台jmeter同时加压

      2、当jmeter压力机安装在没有gui的linux上,又不想通过非gui的方式完成性能测试

    二、原理

      原理很简单就是找一台装有jmeter的机器当控制端,由这个控制端统一控制其它装有jmeter的机器作为代理,产生压力。如下图

    三、安装jdk和jmeter

    1、分别下载windows版本和linux版本的jdk,jdk版本1.8。windows点击安装包一路下一步即可。linux将tar.gz包上传linux解压缩并配置环境变量即可,参见 https://www.cnblogs.com/rslai/p/7859542.html

    2、从 http://jmeter.apache.org/download_jmeter.cgi 下载最新jmeter安装包。windows系统的是zip压缩i文件,linux系统的是tar.gz压缩包。也是简单的解压缩即可。 

    四、配置controller

    本文档使用1.10机器作为控制端,1.11作为代理,ip地址需要根据你的实际情况加以修改,如下图:

     

    1、修改 jmeter.properties 配置文件

      打开 C:apache-jmeter-5.1.1injmeter.properties 配置文件(这是我的jmter解压位置,根据你的位置打开相应文件)

      a)找到 server.rmi.ssl.disable 配置,将行首的注释删掉并改为true 

    server.rmi.ssl.disable=true
    

      如果没有配置运行脚本的时候会报如下图错误

       b)配置代理地址,找到 remote_hosts 并配置如下

        其中1.11就是一台代理ip地址1099是在代理上启动的jmeter-server的监听端口。每台代理以“,”号分割

    remote_hosts=127.0.0.1,192.168.1.11:1099,192.168.1.12:1099,192.168.1.13:1099,192.168.1.10:1099
    

      c)配置代理连接控制端ip地址

      打开 C:apache-jmeter-5.1.1injmeter-server.bat 文件,添加如下内容,添加位置无所谓只要在 set ARGS= 前即可,其中 192.168.1.10就是你的控制端的ip地址

    set rmi_host=-Djava.rmi.server.hostname=192.168.1.10
    

      修改 set ARGS= 配置,原来配置信息如下

    set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER%
    

      在最后添加  %rmi_host%,添加后如下

    set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %rmi_host%
    

      以上配置非必须。如果你的控制端只有一块网卡并且没有安装虚拟机等软件就可以不用配置。

      因为在控制端连接代理后会通知代理控制端的ip地址,然后代理会在测试完成后主动连接控制端,以便将测试结果回传给控制端。此时如果有多块网卡就有可能连接失败,错误现象如下。

      另外一个解决方式是将虚拟网卡或第二块网卡禁用,这样就不会出现连接不上控制端的问题但如果不小心启用的网卡还会出现此问题。

     

     

    五、配置agent

    1、修改 jmeter.properties 配置文件

    根据你安装的目录修改
    vi /home/apache-jmeter-5.1.1/bin/jmeter.properties
    
    1、将原来的
    #server_port=1099
    
    前边的注释去掉改为
    server_port=1099
    
    2、将原来的
    #server.rmi.localport=4000
    
    前边的注释去掉改为
    server.rmi.localport=1099
    

      这里的端口号如果不改也可以,但jmter每次启动都会换一个端口,这样每次都要修改controller的remote_hosts配置信息比较麻烦。不配置如下图端口每次启动都改变

      找到 server.rmi.ssl.disable 配置,将行首的注释删掉并改为true

    server.rmi.ssl.disable=true
    

      如果没有配置运行脚本的时候会报如下图错误

    2、修改 jmeter-server 启动脚本

    vi jmeter-server
    
    将
    #RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
    
    改为
    RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.11
    

      改后如下图,同样如果linux只有一块网卡也无需设置。

      另外一个方法是启动时候指定ip地址如下

    ./jmeter-server   -D java.rmi.server.hostname=192.168.1.11

     2、启动 jmeter-server

    linux上执行 ./jmeter-server 命令windows上双击 jmeter-server.bat 即可,启动成功后如下

    [root@bj-zd2f-vm-ceshi-test-loadrunner1 bin]# ./jmeter-server 
    Using local port: 1099
    Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.1.11:1099](local),objID:[258e0404:16db9c33fc1:-7fff, -5488498502529841046]]]
    

    使用上面命令启动 jmeter-server虽然可以使用但只要关闭xshell后就不能用了,可以使用如下命令运行在后台

    nohup ./jmeter-server &

    如果重新启动服务器那还要每台服务器重新运行 jmeter-server,可以直接将启动命令放到profile文件中这样jmeter-server会跟随系统启动而运行

    打开profile文件
    vi /etc/profile
    
    在profile最后添加运行jmeter-server命令
    cd /home/apache-jmeter-5.1.1/bin
    nohup /home/apache-jmeter-5.1.1/bin/jmeter-server &
    
    保存profile在命令行执行如下命令,使profile配置生效
    source /etc/profile

    六、分布式压测

     1、在控器器中打开脚本

     2、点击 run->Remote Start 下的agent压测

     

    压测完成后就可以看到报告了。

     

    七、分布式压测中的参数文件问题

    1、当脚本引用csv参数文件后不要使用绝对路径

    2、将此csv文件上传到所有agent

    csv文件需要上传到启动 jmeter-server时候的目录下,由于在profile文件中添加了 cd /home/apache-jmeter-5.1.1/bin 命令,所以将csv文件传到此目录 /home/apache-jmeter-5.1.1/bin 即可

    参考文档:

      https://blog.csdn.net/lt326030434/article/details/81065848

      https://www.cnblogs.com/insane-Mr-Li/p/10713147.html

      https://blog.csdn.net/weixin_38208401/article/details/78850157

      https://www.cnblogs.com/bf-blackfish/p/11078411.html

      https://www.cnblogs.com/insane-Mr-Li/p/10712155.html

      https://blog.csdn.net/qq_35304570/article/details/81485799

  • 相关阅读:
    【自然框架】 之 资源角色——列表过滤方案(思路篇)
    【自然框架】 之 主从表的添加、修改
    今天你进步了吗?
    【自然框架】通用权限的视频演示(一):添加角色,权限到功能节点和按钮
    【杂谈】您是以什么姿态来参与讨论、回帖的?
    【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图
    【自然框架】 页面里的父类—— 改进和想法、解释
    页面里的父类——BaseUI源代码下载(2009.10.15更新)
    【自然框架】 页面里的父类——把共用的东东都交给父类,让子类专注于其他。
    【自然框架】之通用权限:数据库设计的几种使用方式
  • 原文地址:https://www.cnblogs.com/rslai/p/11653047.html
Copyright © 2011-2022 走看看