linux上实现jmeter分布式压力测试(转)

摘要:
没有讨论安装Linux的过程。我们需要安装jdk。因为我们的测试用例是使用jmeter在Windows上编写的,然后上传到Linux,所以JDK安装会找到您想要的版本,然后执行以下命令来安装JDK:tar zxfjdkname是您想要安装的JDK安装包,这里我们可以通过编辑配置文件进行配置:我们需要执行以下命令:source/etc/profile要验证jdk是否已成功安装,
    • 摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试。下面就记录下近期的学习。我想将这次的博文分成三个部分:1、开始测试前的准备(测试环境的搭建)2、在一台linux上测试3、多台linux分布式测试首先来看看测试环境的搭建。我是自己创建的linux虚拟机,所以就用它来说说吧。安装linux的过程就不多说了,不是本次的重点,有不太明白的朋友,可以自己去百度下,或者我有一篇文章也大概记录了我的安装过程,可以参考下。linux安装好之后,我
    • 最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试。下面就记录下近期的学习。


      我想将这次的博文分成三个部分:


      1、开始测试前的准备(测试环境的搭建)


      2、在一台linux上测试


      3、多台linux分布式测试


      首先来看看测试环境的搭建。我是自己创建的linux虚拟机,所以就用它来说说吧。


      安装linux的过程就不多说了,不是本次的重点,有不太明白的朋友,可以自己去百度下,或者我有一篇文章也大概记录了我的安装过程,可以参考下。


      linux安装好之后,我们需要安装jdk,因为jmeter是依赖于jdk运行的。由于我们的测试case都是在windows上利用jmeter写好之后上传到linux上跑的,所以,为了避免不必要的错误,windows和linux的jdk和jmeter版本要保持一致。


      JDK的安装


      找到自己想要的版本,在linux的/usr/下新建一个文件夹,名字自己取,用来放jdk安装包和安装jdk使用(我使用的是/usr/java/)。然后将安装包放到linux的/usr/java/下,然后执行下面命令进行jdk的安装:


      tar -zxf

      jdk name 就是你要安装的jdk安装包,至此,jdk安装就完成了。为了节省空间,我们要把安装包删掉,执行下面的命令:


      rm -f

      -f 指明了不需要询问我,直接删掉。


      接下来,我们需要配置系统变量,就像windows操作系统中配置环境变量一样,这里我们通过编辑profile文件来配置:


      vi /etc/profile

      然后按下Ins键,当下面出现INSERT时,我们就可以进行编辑了。


      在文件的后面追加下面几行内容:


      JAVA_HOME=/usr/java/jdk1.8.0_121 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH


      内容中的路径和jdk版本都要换成自己的,这个是笔者的路径。


      添加完之后,按下Esc键,退出编辑模式,然后输入:wq 再按下回车键,这样就将修改的内容保存并退出,为了让修改的文件生效,需要执行下面的命令:


      source /etc/profile

      为了验证jdk是否成功安装,我们执行下面的命令,如果出现对应的安装版本信息,则说明安装成功,否则请检查安装和配置。


      [ aliyunzixun@xxx.com java]# java -version
      java version "1.8.0_121"

      Jmeter的安装


      jdk安装完成,就开始jmeter的安装了。安装过程很简单,跟jdk类似,现在/etc/下创建jmeter文件夹,将安装包放到/usr/jmeter/下,执行下面命令:


      tar -zxf

      安装好以后,去配置环境变量。依然是修改/etc/profile的内容。添加以下几行:


      JMETER_HOME=/usr/jmeter/apache-jmeter-3.0 CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH PATH=$JMETER_HOME/bin/:$PATH export JMETER_HOME CLASSPATH PATH


      一定要注意,路径要换成自己的哦。至此,jmeter也已经安装完毕啦,我们可以执行以下命令要验证,jmeter是否安装成功。


      jmeter -v

      如果正确的安装,就会出现jmeter的版本相关信息。


      执行一条jmeter测试


      相信到这里的朋友,测试环境已经搭建好了。那么接下来呢,我们就可以开始执行第一条测试了。


      首先,创建一个文件夹来放测试case,因为我是用虚拟机跟本地windows机器创建了一个共享文件夹,所以为了方便,我就直接放在该文件夹下了。(/mnt/hgfs/share/jmeterTest)


      然后可以运行下面的命令:


      jmeter -n -t test.jmx -l testReport.jtl

      jmeter前面我们已经安装,jmeter在安装路径的bin目录下。


      -n 表示没有界面的运行


      -t 后面紧跟指定的需要运行的测试case(测试case在windows上用jmeter图形界面事先写好)


      -l 指定了测试报告的文件(也可以指定路径,默认在当前目录下),生成的报告可以保存到本地windows上在jmeter中打开查看。


      需要注意的是:我们的操作是在root身份下进行的,如果你登陆的是其他身份的用户,可能jmeter不具有x(可执行)权限,我们需要先给它权限。


      至此,在linux上通过命令行执行jmeter测试已经成功完成了。但是,对于一个有点儿追求的测试狗来说,这肯定是远远不够的。下面我们就来说下,如何在多台linux上分布式执行jmeter测试。


      多台linux分布式测试


      先来理解下分布式测试原理,看下图:


      linux上实现jmeter分布式压力测试的完整教程_Java


      1、Jmeter分布式测试时,选择其中一台作为调度机(master/Controller),其它机器做为执行机(slave/Agent)。


      2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,应该是通过命令行模式执行的。


      3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。


      注意:


      (1)每一台jmeter远程服务器(slave机器)都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划;


      (2)采用JMeter远程模式并不会比独立运行相同数目的非GUI测试更耗费资源。但是,如果使用大量的JMeter远程服务器,可能会导致客户端过载,或者网络连接发生拥塞;


      (3)默认情况下,master机器是不执行参与生成并发数据的;


      (4)调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。


      下面开始实施吧。


      首先,按照前面安装jmeter的步骤,在其他linux上安装jdk和jmeter(jdk和jmeter的版本以及安装路径要保持一致,不然可能会出错,无法成功执行)


      确保环境搭建完成以后,进入jmeter的安装目录,进入bin下,启动jmeter-server(如果没有可执行权限,要先添加权限,root用户没有权限限制)


      所有的slave机器都要启动jmeter-server,默认端口是1099,可以通过修改jmeter.properties文件进行修改。回到master机器上,修改jmeter.properties文件中的remote_hosts,将slave机器的ip地址添加上去,多个ip之间用逗号隔开。其中127.0.0.1表示master机器本身,为了独立开master,可以将其去掉,这样就不会在master上执行测试。


      然后在master机器上执行下面的命令:


      jmeter -n -t test.jmx -R ip1,ip2,ip3 -l testReport.jtl

      其中 -R 指定远程连接的slave机器的ip地址,多个ip之间用逗号隔开。


      至此,分布式jmeter测试也完成了。但是,对,我又要说但是了。很有可能你不会执行成功(因为我就没有那么容易的成功啊!哈哈哈)


      那么问题来了


      下面我列举出一些我在这个过程中出现的一些错误,以及后来的解决办法。


      问题1:


      在slava机器上执行jmeter-server的时候,会出现以下的问题:(以下为本人遇到的问题)


      1、出现 XII DISPLAY 这样的错误,可以先执行下面命令:


      echo $DISPLAY

      如果内容为空(我就是内容为空),那么,就继续执行下面的命令:


      DISPLAY=:0
      #DISPLAY=localhost:0.0

      上面两个都可以


      问题2:


      jmeter-server启动失败。通常有以下两个错误:


      1、Unable to get local host IP address


      2、xxx is a loopback address


      一般上面的两个问题,都是由host文件引起的,我们需要修改host文件,可以执行下面的命令:


      vi /etc/hosts

      我是将127.0.0.1替换成本机ip地址的。


      问题3:


      jmeter-server启动成功,但是在master上无法执行分布式测试。


      我这边抛出的错误是:”No route to host“


      这个问题是由防火墙引起的,也就是说,slave上的防火墙没有关闭,此时,我们需要到slave上关掉防火墙。之后就可以正常运行了。关闭防火墙的方法多种,我这里特别记录下我自己红帽子7虚拟机的命令:


      #查看防火墙状态
      systemctl status firewalld
      #关闭防火墙
      systemctl stop firewalld

      好了,整个过程就是这样的额。


      偷偷告诉你们一个事情,因为我是个“懒癌患者”,所以上面这些执行测试的操作,都不要重复去做,于是我就想方法将他们写到了一个shell文件中,下次再跟大家一起分享下这个小脚本,希望大神给我指点!!!!

    • 原链接:https://www.aliyun.com/jiaocheng/800179.html

免责声明:文章转载自《linux上实现jmeter分布式压力测试(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SAP NetWeaver Business Client (NWBC) 简介ra寄存器定位core下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

screen的使用

screen的好处就是不会因为远程的操作因网络问题中断掉。 安装 yum -y install screen  创建一个新的窗口 screen -S <name>  查看会话 screen –ls 隐藏并保留当前会话窗口: 按Ctrl+A,再按"D"键 恢复会话窗口: screen -r xx #恢复名字为xx的会话 完全退出 当...

npm 介绍

安装NPM NPM的全称是Node Package Manager,如果你熟悉ruby的gem,Python的PyPL、setuptools,PHP的pear,那么你就知道NPM的作用是什么了。没 错,它就是Nodejs的包管理器。Nodejs自身提供了基本的模块。但是在这些基本模块上开发实际应用需要较多的工作。所幸的是笔者执笔此文的时候 NPM上已经有了...

Jmeter(八)

 ------------------------------------------------------------------- 转载自:北京-宏哥 https://www.cnblogs.com/du-hong/p/13037317.html ----------------------------------------------------...

vue 支持 超大上G,多附件上传

之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。   但无论插件再怎么灵活,也难以应付所有的需求,比如,你要上传一个2G的文件。以现在我们的网速,恐怕再快也得传半小时。要命...

Visual Studio 2012设置Jquery/Javascript智能提示

Visual Studio 2012设置Jquery/Javascript智能提示在Visual Studio 2008 Visual Studio 2010中微软已经开始支持jquery/javascript智能提示了。反而是Visual Studio 2012让人莫不清楚头脑。 但是需要安装一个插件。方法在这里也补充一下: 1  安装VS2008SP...

Tomcat开机自启动,通过服务名重启

1、将Tomcat注册为服务2、服务开机自启动3、修改Tomcat进程名(待补充)4、通过命令查看日志,不需要进入到日志目录(待补充)5、tomcat进程守护(待补充) 1. 安装tomcat, 此处省略安装步骤, 我将tomcat安装在/home/boos_tomcat路径下 2. 输入命令 " cp -p /data/boos_tomcat/bin/...