性能测试工具 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测试脚本有可能会提示拒绝连接的错误。

性能测试工具 jmeter 分布式压力测试实操的更多相关文章

  1. jmeter分布式压力测试实践+登录为例

    1.一张分布式压力的图解,如下 准备: 1.两台slave 2.一个master 3.待测目标地址 http://XXX 准备环境:linux环境,master如果可以最好有可视化电脑界面,便于jmx ...

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

    摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试.下面就记录下近期的学习.我想将这次的博文分成三个部分:1.开始测试前的准备(测试环境的搭建)2.在一 ...

  3. 【转】Jmeter分布式压力测试

    安装 下载地址:http://jmeter.apache.org/download_jmeter.cgi 安装前提(因为jmeter依赖于Java所以必须先配置好java) 下载后解压: tar -x ...

  4. Jmeter 分布式压力测试

      JMeter中进行分布式测试 作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, ...

  5. Jmeter分布式压力测试

    有时候,一台机器无法支持很多个虚拟用户并发,这时就会使用分布式测试来实现这个功能,jmeter是有提供这个功能的.要实现分布式测试,得在主从(agent和controler)机器的jmeter安装目录 ...

  6. jmeter分布式压力测试配置操作

    前提准备条件:1.主控机一台为master,ip地址:10.8.88.1772.负载机一台为slave, ip地址:10.8.88.1193.主控机和负载机都安装一样的JDK环境和jmeter版本.5 ...

  7. Jmeter性能测试-分布式压力测试

    作为一个测试行业的菜鸟,由于投身于一个小公司,包揽所有的测试.刚开始的功能测试到接口测试,稳定性测试,兼容性测试等,一般由于是小项目所以对于性能有所忽略,也没怎么涉及,公司接了个大项目,后期对于性能上 ...

  8. .net分布式压力测试工具(Beetle.DT)

    肯定有人会问为什么会写这样一个开源工具?和现有的有什么差别?不过对于一个程序员来说写东西还真不需要理由的:),主要原因是工作有点闲(开玩笑),不过说实话一个程员怎可能会停止写代码呢(作为一个奔4的程序 ...

  9. 性能测试工具JMeter 基础(六)—— 测试元件: 线程组

    线程组的定义: 线程组是测试计划执行的入口,所有的逻辑控制器和取样器都必须在线程组下,其他的元件根据位置的不同作用域是不同的. 线程组是每个线程都是独立运行测试脚本,一个线程组就等于一个用户,通过多个 ...

随机推荐

  1. 回溯算法 - n 皇后问题

    (1)问题描述 在 n × n 格的棋盘上放置彼此不受攻击的 n 个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n 后问题等价于在 n × n 的棋盘上放置 n 个 ...

  2. php 抛出异常

    <?php //try里面执行的东西如果不成立,可直接 throw new Exception('异常信息'),那么try里面的程序将会被停止执行,直接执行catch里面的程序 try { if ...

  3. 关于steam平台“wallpaper engine”软件出现界面黑屏,但壁纸能播放的问题

    前阵子重装电脑后,在使用wallpaper engine这款软件时发现了以下令人疑惑的画面: 点击"设置"和"壁纸选择"界面全是黑的......这还没完,更气人 ...

  4. 两年经验拿到蚂蚁金服,字节offer,附上金九银十BAT面试核心知识点整理

    前言 我自己是本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找 ...

  5. 【VUE】6.组件通信(一)父组件向子组件传值

    1. 前提&知识点 1./components/Father.vue 是父组件, Son.vue 是子组件 2.父组件像子组件通信 props 2.组件通信 1. 新增一个路由入口 /fath ...

  6. mongodb 副本集之入门篇

    作者: 凹凸曼-军军 前言:mongodb 因为高性能.高可用性.支持分片等特性,作为非关系型数据库被大家广泛使用.其高可用性主要是体现在 mongodb 的副本集上面(可以简单理解为一主多从的集群) ...

  7. 多元Huffman编码变形—回溯法

    一.问题描述 描述 在一个操场的四周摆放着n堆石子.现要将石子有次序地合并成一堆.规定在合并过程中最多可以有m(k)次选k堆石子合并成新的一堆,2≤k≤n,合并的费用为新的一堆的石子数.试设计一个算法 ...

  8. Java基础教程——Java简介

    Java是SUN公司1995年推出的一门高级编程语言,是一种面向Internet的编程语言,随着Java技术在Web方面的不断成熟,已经成为Web应用程序的首选开发语言. (2009年SUN公司被Or ...

  9. java base64加解密

    接上篇java Base64算法. 根据之前过程使用base64加解密,所以写成了工具类. 代码示例; public class Base64Util { private static Logger ...

  10. C中memcpy函数用法

    1.函数原型 void *memcpy(void *destin,void *source,unsigned n); 其中, destin代表用于存储复制内容的目标数组,类型强制转换为void*指针. ...