zoukankan      html  css  js  c++  java
  • Jmeter实现分布式并发

    在性能测试过程中,一旦进行高并发操作时就会出现以下尴尬场景,JMeter客户端卡死、请求错误或是超时等,为了解决这一问题,我们需要将一次大的操作分布在多个服务器上,由多个服务器来承担负载压力。

    接下来我们就来看一下如何实现jmeter的分布式并发:

    需要在负载机上配置jdk环境和jmeter环境

    首先我们需要准备一个负载机,本次演示的负载机是博主在虚拟机上搭建的一个Linux服务器,Linux系统需要安装jdk(不知道如何配置jdk的请自行百度)然后配置Linux环境下的jmeter环境:

    官网下载jmeter的版本

    https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/,我下载的是apache-jmeter-5.1.1.tgz

    将下载的包放到/usr/local目录下(此目录可自行设置,一般安装包我都安装在这个目录下),进入此目录解压文件

    配置环境变量,进入根目录输入命令vim etc/profile,配置一下环境变量

    export JMETER_HOME=/usr/local/apache-jmeter-5.1.1 (不要照搬,改为你自己的路径
    export PATH=$JMETER_HOME/bin:$PATH

     然后输入jmeter -v验证,如果出现以下界面,那么恭喜你Linux环境下jmeter就配置成功了

    接着进入jmeter的bin目录启动jmeter,命令:./jmeter.sh,可以看到成功启动

    master(主压力机)在jmeter.properties中添加remote_hosts

    配置路径:...apache-jmeter-5.0in 路径下的jmeter.properties;
    remote_hosts=127.0.0.1 后面增加远程负载机的ip和端口号,如果需要添加多个,用逗号分隔就可以;

    Slave(远程负载机)在jmeter.properties中添加server_port

    server_port=1099
    server.rmi.localport=1099

    备注:这里的端口号可以自定义,只要与主压力机里面配置的一致即可

    进入负载机的usr/local/apache-jmeter-5.1.1/bin目录,编辑jmeter.properties文件

     

    Slave(远程负载机)启动Jmeter-server

    命令:./jmeter-server -Djava.rmi.server.hostname=192.168.3.130(启动时必须加上后面的-Djava.rmi.server.hostname=192.168.3.130,ip为负载机ip,不然会报错)启动成功后如下图所示:

    配置完成后重启主压力机,查看远程启动

    可查看到配置的远程负载机IP,如下图:(主压力机最好,也加上1099端口,启动程序时必须先启动,jmeter.sever文件)

    添加一个线程组,添加取样器-http请求

    以访问百度为例,添加监听器-察看结果树

     

     至此,分布式并发的配置已经完成!

    遇到的问题

    任何事都不是一帆风顺的,配置过程中也可能遇到这样那样的问题,以下是我在配置过程中遇到的问题以及解决办法

    启动jmeter-server服务时报下图的错误:

    解决办法:进入负载机的usr/local/apache-jmeter-5.1.1/bin目录,编辑vim jmeter.properties文件,有一行是这样的server.rmi.ssl.disable=false这行说明什么呢,就是让我们决定是不是要启动SSL。很明显,我的电脑上并没有这个,所以就不能启动。把这个改成server.rmi.ssl.disable=true,并取消注释就ok了

     远程启动时一直连接不上负载机

    解决办法:遇到这种情况时,可能存在多种因素,可以参考以下步骤逐一排查
    (1)远程负载机的Jmeter-server是否启动成功;
    (2)远程负载机是否处于联网状态;
    (3)防火墙是否处于关闭状态:

    centos5/6开启和关闭防火墙命令:

    开启:service iptables start

    关闭:service iptables stop

    centos7开启和关闭防火墙命令:

    开启:systectl start firewalld.service

    关闭:systectl stop firewalld.service

    此方法为临时关闭,即时生效,重启后失效

    (4)主压力机和远程负载机的Jmeter版本是否一致;

    总结:小编也是一个性能测试初学者,在学习的过程中会遇到各种问题,遇到问题的时候不要慌,也不要上来就去问别人,自己要学会使用搜索引擎,实在不行再去问。解决问题的过程也是学习的过程,更能加深自己的印象!

  • 相关阅读:
    python学习笔记 class
    工作随谈之扯淡
    性能测试你了解多少?
    SVN常见问题汇总
    使用appium做自动化测试时,send_keyss只能输入字母数字,无法输入中文
    python+appium-desktop:安卓(android)7.0以上使用appium无法定位元素(无法refresh)且 无法运行脚本
    JMeter处理返回结果unicode转码为中文
    国内手机号段汇总(全)-2018-09
    Python : *args和**kwargs是什么东东呢?
    selenium 3.0变化
  • 原文地址:https://www.cnblogs.com/mudingxi/p/12725932.html
Copyright © 2011-2022 走看看