linux上实现jmeter分布式压力测试(转)
- 摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是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分布式测试
先来理解下分布式测试原理,看下图:

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分布式压力测试(转)的更多相关文章
- 性能测试工具 jmeter 分布式压力测试实操
性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...
- jmeter分布式压力测试实践+登录为例
1.一张分布式压力的图解,如下 准备: 1.两台slave 2.一个master 3.待测目标地址 http://XXX 准备环境:linux环境,master如果可以最好有可视化电脑界面,便于jmx ...
- Jmeter 分布式压力测试
JMeter中进行分布式测试 作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, ...
- 【转】Jmeter分布式压力测试
安装 下载地址:http://jmeter.apache.org/download_jmeter.cgi 安装前提(因为jmeter依赖于Java所以必须先配置好java) 下载后解压: tar -x ...
- jmeter分布式压力测试配置操作
前提准备条件:1.主控机一台为master,ip地址:10.8.88.1772.负载机一台为slave, ip地址:10.8.88.1193.主控机和负载机都安装一样的JDK环境和jmeter版本.5 ...
- Jmeter分布式压力测试
有时候,一台机器无法支持很多个虚拟用户并发,这时就会使用分布式测试来实现这个功能,jmeter是有提供这个功能的.要实现分布式测试,得在主从(agent和controler)机器的jmeter安装目录 ...
- Jmeter性能测试-分布式压力测试
作为一个测试行业的菜鸟,由于投身于一个小公司,包揽所有的测试.刚开始的功能测试到接口测试,稳定性测试,兼容性测试等,一般由于是小项目所以对于性能有所忽略,也没怎么涉及,公司接了个大项目,后期对于性能上 ...
- linux环境下使用jmeter进行压力测试
linux环境下使用jmeter进行压力测试 linux环境下使用就meter进行压力测试: linux环境部署: 在Linux服务器先安装jdk: 2.以jdk-8u172-linux-x64.ta ...
- JMeter接口压力测试课程入门到高级实战
章节一压力测试课程介绍 1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介: 讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分 ...
随机推荐
- C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。
//对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...
- 微服务架构中的Redis
了解如何将Redis与Spring Cloud和Spring Data一起使用以提供配置服务器,消息代理和数据库. Redis可以广泛用于微服务架构中.它可能是少数流行的软件解决方案之一,你的应用程序 ...
- DataFrame loc和iloc的区别
loc loc是select by label(name) loc函数是选择dataframe中那一行的index == k的 iloc loc是select by position loc函数是选择 ...
- plus接口
//获取手机端本地文件路径 plus.io.resolveLocalFileSystemURL(url, success(e){ }, fail(e){ })
- window系统mysql安装后获取默认密码
未设置密码,获取默认密码方法 第一步:进去mysql根目录下,如果没有data文件夹可以新建一个,找不到my.ini文件也新建一个(在根目录下创建的my.ini,重新配置的参数会覆盖源文件的参数,所以 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy IO
Numpy 可以读写磁盘上的文本数据或二进制数据. NumPy 为 ndarray 对象引入了一个简单的文件格式:npy. npy 文件用于存储重建 ndarray 所需的数据.图形.dtype 和其 ...
- 【读书笔记】图解HTTP完整流程
1.1 使用 HTTP 协议访问 Web: 根据 Web 浏览器地址栏中指定的URL,从服务端获取资源等信息,在页面上展示. Web 使用一种 HTTP (超文本传输协议)作为规范,完成从客户端到服务 ...
- Mac 下 vim 常用命令
vim 三种模式:命令模式.插入模式.底线命令模式. 切换模式: 命令模式: 启动 vim 进入命令模式: i 切换到插入模式,以输入字符. x 删除当前光标所在处的字符. : 切换到底线命令 ...
- 高级T-SQL进阶系列 (二)【上篇】:使用 APPLY操作符
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 伴随着SQL SERVER 2005的发布,微软增加了一个新的操作符,它允许你将一个记录集与一个函数进行关联,然 ...
- linux kali 的ifconfig命令
ifconfig命令 1.ifconfig执行页面 root@localhost:/home/zys# ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> ...