zoukankan      html  css  js  c++  java
  • 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操

    本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布式测试。

    slave-1/slave-2/master配置好jmeter环境(以下操作在jdk版本1.8环境下进行的)

    1.下载jmeter3.2

    wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-3.2.tgz

    2.解压

    tar xvf apache-jmeter-3.2.tgz

    3.添加环境变量

    vim  /ect/profile

    最后一行添加代码:

    JMETER=/root/apache-jmeter-3.2
    CLASSPATH=$CLASSPATH:$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar
    PATH=$PATH:$JMETER/bin

    运行以下命令修改立即生效:

    source /etc/profile

    查看版本是否配置成功:

    jmeter -v 

    4.准备好自己的测试脚本jmx文件放在目录/apache-jmeter-3.2/test下

    slave-1 / slave-2 启动jmeter-server

    5.运行jmeter-server

    进到目录/apache-jmeter-3.2/bin:

    vim jmeter-server

    添加以下代码:(****为每台server自己的ip):

    RMI_HOST_DEF=-Djava.rmi.server.hostname=****
    • 开启jmeter-server:

      ./jmeter-server
    • 运行成功的话会在控制台显示:

      Created remote object: UnicastServerRef [liveRef: [endpoint:[***](local),objID:[***, ***]]]

    master机器运行测试脚本

    6.修改配置文件jmeter.properties

    进入目录/apache-jmeter-3.2/bin:

    vim jmeter.properties

    大概1038行,添加以下代码:

    jmeterengine.nongui.port=0

    7.运行脚本,开始测试

    测试脚本test.jmx,在目录/apache-jmeter-3.2/test下,新建文件夹report,用来保存结果:

    mkdir report

    运行以下命令(***为slave测试机器的ip,以逗号,间隔):

    jmeter -n -t ws_test.jmx -R  ***,*** -l test.jtl -e -o /apache-jmeter-3.2/test/report/
    • 提示以下消息则表示成功开始测试:

      Creating summariser <summary>
      Created the tree successfully using test.jmx
      Configuring remote engine: ***
      Configuring remote engine: ***
      Starting remote engines
      Starting the test @ Sun Mar 04 11:23:31 CST 2018 (1520133811112)
      Remote engines have been started
    • 此时slave机器控制台会提示:

      Starting the test on host *** @ Sun Mar 04 11:23:32 CST 2018 (1520133812700)
    • 测试脚本运行结束master控制台会显示结果:

       
    • slave机器控制台会提示:

      Finished the test on host *** @ Sun Mar 04 11:25:53 CST 2018 (1520133953286)

      至此测试已经完成。

    8.查看测试结果报告

    master 机器上运行:

    python -m SimpleHTTPServer 8000

    报告查看网址(***为该机器ip):http://***:8000/report/index.html

    9.遇到的坑

    • 在slave开启jmeter-server时,直接运行./jmeter-server,会提示错误

      Server failed to start: java.rmi.RemoteException: Cannot start. ***  is a loopback address.
      An error occurred: Cannot start. *** is a loopback address.

      貌似是因为没有指定主机导致的,所以在jmeter-server中指定RMI_HOST_DEF写入hostname搞定了问题:

      vim jmeter-server

      添加以下代码:(***为每台server自己的ip):

      RMI_HOST_DEF=-Djava.rmi.server.hostname=***
    • 在master跑测试脚本时,会一直提示如下信息,导致测试一直跑不起来:

      Waiting for possible shutdown message on port 4445 

      解决方法:
      进入目录/apache-jmeter-3.2/bin:

      vim jmeter.properties

      大概1038行,添加以下代码:

      jmeterengine.nongui.port=0

      这个是用于监听shutdown message的,如果不需要,可以直接设置为0即可。

    • 每台机器要在同一局域网下,最好操作系统保持一致(此次测试在linux下实现),不然运行master测试脚本有可能会提示拒绝连接的错误。

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/weihc/p/12147395.html
Copyright © 2011-2022 走看看