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

    1. stop.sh需要跑Jmeter的服务器上安装Jmeter
      yum install lrzsz 安装rz、sz命令
      rz jemter的压缩包 拷贝到/usr/local/tools下面
      unzip apache-jmeter-3.0.zip 解压
       
    2. 权限修改
      chmod 777 * 修改权限

    3. 时间修改
      ntpdate s2m.time.edu.cn 同步到服务器
      或者 ntpdate time.nist.gov
      时间不一致生成报表会有问题

      本机Window是的时间修改(与时间服务器同步):
       w32tm /resync 
       
       
    4. 使用分布式压测,把linux的jmeter-slave机器时,如果并发量大,可能出现java.net.NoRouteToHostException的错误,经过排查,原因是tcp的连接满了,且大量都处于TIME_WAIT状态,可理解为资源浪费。因此需要打开tcp连接回收和重用机制,使tcp资源利用最大化,使用以下2个命令:
       

      echo 1 | sudo dd of=/proc/sys/net/ipv4/tcp_tw_recycle
      echo 1 | sudo dd of=/proc/sys/net/ipv4/tcp_tw_reuse

    5. 为了统一jmeter的目录和使用方法,我们测试人员应该务必使用相同的部署方式,如下:
      7.1 如果是基于linux的系统,则jmeter目录放置为/usr/local/tools/apache-jmeter-3.0
      7.2 为了方便启用,统一时间等各种因素,统一使用自定义的shell脚本启用jmeter-server, shell脚本为remote.sh,放置在/usr/local/tools/目录下,如果目录下没有该脚,则可直接vi编辑并创建该文件,文件内容如下:

      ntpdate s2m.time.edu.cn
      echo 1 | sudo dd of=/proc/sys/net/ipv4/tcp_tw_recycle
      echo 1 | sudo dd of=/proc/sys/net/ipv4/tcp_tw_reuse
      ./stop.sh jmeter
      /usr/local/tools/apache-jmeter-3.0/bin/jmeter-server -Djava.rmi.server.hostname=【肉鸡的局域网ip】

      7.3 stop.sh脚本为自定义的shell脚本,用来根据进程名模糊匹配并批量结束所有匹配进程,放置在/usr/local/tools/目录下,如果目录下没有该脚本,则可直接vi编辑并创建该文件,文件内容如下:


      if [ $# -lt 1 ]
      then
      echo "缺少参数:procedure_name"
      exit 1
      fi

      PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
      for i in $PROCESS
      do
      echo "Kill the $1 process [ $i ]"
      kill -9 $i
      done

    6. 本地Jmeter/bin中修改jmeter.properties
      remote_hosts=127.0.0.1:1099,172.16.103.121:1099,172.16.103.122:1099

    启动Jmeter,查看是否启动成功


    注意:

    1. 把查看结果树禁用掉就可以实时查看结果并且不卡


    2. 如果连不上远程服务器,可以用telent ip port命令看看是否能连接到远程服务器

    3. 由于Java内存不够Jmeter启动不起来,可以改Jmeter.bat文件中这几个值要所需内存改小点

    rem See the unix startup file for the rationale of the following parameters,
    rem including some tuning recommendations
    set HEAP=-Xms2096m -Xmx3096m
    set NEW=-XX:NewSize=504m -XX:MaxNewSize=2048m
    set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
    set TENURING=-XX:MaxTenuringThreshold=2
    rem Java 8 remove Permanent generation, don't settings the PermSize
    if %current_minor% LEQ "8" (
    rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
    set PERM=-XX:PermSize=1024m -XX:MaxPermSize=2048m
    )

    4. jmeter-server启动报如下错误

    [root@localhost bin]# ./jmeter-server
    Writing log file to: /usr/local/tools/apache-jmeter-3.0/bin/jmeter-server.log
    Created remote object: UnicastServerRef [liveRef: [endpoint:[172.16.103.122:60185](local),objID:[-27de3c76:157d730479f:-7fff, 6191893519130640874]]]
    Problem creating registry: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: 
    java.net.BindException: Address already in use
    Continuing...
    Starting the test on host 172.16.103.122:1099 @ Tue Oct 18 17:48:26 CST 2016 (1476784106546)
    Finished the test on host 172.16.103.122:1099 @ Tue Oct 18 17:48:28 CST 2016 (1476784108627)
     

    原因:端口已被占用

    ps -ef | grep 1099 查看占用端口的PID

    kill -9 PID

    5. 如果压测数据放在文件里,需要把文件上传到肉机,文件路径需要用相对路径


    本机启动在jmx所在目录下启动

    肉机上放在Jmeter-Server下的data文件夹里,在重启jmeter-server
     

    linux命令如下:

    979 cd /usr/local/
    980 pwd
    981 ll
    982 mkdir tools
    983 cd tools
    984 rz
    985 ll
    986 unzip apache-jmeter-3.0.zip 
    987 LL
    988 ll
    989 rm apache-jmeter-3.0.zip 
    990 ll
    991 cd apache-jmeter-3.0/
    992 chmod 777 *
    993 ntpdate s2m.time.edu.cn
    994 cd bin
    995 more jmeter-server
    996 ifconfig
    997 vi jmeter-server
    998 ./jmeter-server
    999 chmod 777 *
    1000 ./jmeter-server
    1001 cd /usr/local/tools
    1002 ll
    1003 cd apache-jmeter-3.0/
    1004 cd bin/
    1005 ll
    1006 ./jmeter-server

  • 相关阅读:
    Linux 环境变量 设置 etc profile
    Linux 升级glibc-2.14 失败 我遇到的问题
    qt窗口的切换
    qt事件机制---事件范例
    qt中的事件机制
    qt的信号与槽函数
    linux下qt的安装
    qt中的udp编程
    qt中的tcp编程
    qt中的多线程
  • 原文地址:https://www.cnblogs.com/chenjiazhu/p/6308653.html
Copyright © 2011-2022 走看看