美文网首页性能测试
JMeter分布式测试环境搭建 & 详细配置流程解析

JMeter分布式测试环境搭建 & 详细配置流程解析

作者: Fighting_001 | 来源:发表于2019-01-03 17:18 被阅读351次

    目录结构

    一、预先准备工作
        1. Linux服务器环境(LAMP)搭建
        2. Linux服务器资源监控
            1)Linux服务器资源监控
            2)MySQL数据库服务器监控
    二、 Linux服务器(Slave机)配置JMeter运行&监听环境
        1. 安装JAVA环境
        2. 上传JMeter至服务器
        3. 配置JMeter环境变量
        4. 启动jmeter-server
        5. 上传ServerAgent至服务器,启动监控服务器资源
    三、Windows主控机(Master机)配置JMeter运行&监听环境
        1. 预先安装JAVA和JMeter
        2. 配置远程主机地址
        3. 启动jmeter服务
        4. 启动JMeter GUI工具
    四、执行JMeter分布式测试
        1. 预先准备:录制测试脚本
        2. 对测试脚本进行参数配置,调试脚本
        3. 执行JMeter分布式测试
            1)执行方式选择
            2)设置:线程数、循环数、定时场景,启动测试
    

    本文在 [JM_09]JMeter分布式测试-操作要点整理 基础上进行实践拓展,实现Master机上运行JMeter对Linux服务器进行分布式测试的效果。

    JMeter分布式测试示意图

    <本次配置>
    Master机:Windows物理机
    Slave机:Linux虚拟机;Windows物理机
    Server:Linux虚拟机(被测服务器)


    一、预先准备工作

    1. Linux服务器环境(LAMP)搭建

    CentOS7安装PhpStudy,搭建Linux服务器环境(LAMP+LNMP)
    CentOS7安装PhpStudy+ECShop要点 & 异常处理

    2. Linux服务器资源监控

    1)Linux服务器资源监控

    使用Nmon ==> Linux性能监控工具Nmon的安装使用、生成数据报告
    (可联合JMeter插件工具<Perfmon(Servers Performance Monitoring)>、以及Linux自带的 top 命令实时监控)

    2)MySQL数据库服务器监控

    使用Spotlight ==> 数据库性能监控工具Spotlight on MySQL的安装

    二、 Linux服务器(Slave机)配置JMeter运行&监听环境

    1. 安装JAVA环境

    Master机和Slave机都需要安装相同版本的JAVA环境(如:JDK 8),并配置环境变量。如:Linux系统中安装JDK ==> CentOS7系统中安装JDK8-过程记录
    JAVA目录位置:/usr/local/java(预先在/usr/local 目录下创建java目录:mkdir java

    2. 上传JMeter至服务器

    1)预先将 apache-jmeter-4.0.zip 压缩包上传至Linux服务器,如 /usr/local/jmeter 目录下(预先在/usr/local 目录下创建jmeter目录:mkdir jmeter
    2)解压:unzip apache-jmeter-4.0.zip

    3. 配置JMeter环境变量

    以命令 vi /etc/profile 打开环境变量配置文件,在配置文件内接近末尾位置添加以下内容,如下:

    # ---Set JMETER Environment---
    JMETER_HOME=/usr/local/jmeter/apache-jmeter-4.0
    PATH=$PATH:$JMETER_HOME/bin
    export JMETER_HOME PATH
    # ---Set JMETER Environment---
    

    保存以上配置内容,然后使环境变量生效:source /etc/profile
    查看JMeter配置版本:jmeter -v

    4. 启动jmeter-server

    路径切换:cd /usr/local/jmeter/apache-jmeter-4.0/bin
    操作命令:jmeter-server./jmeter-server

    启动jmeter-server服务,若出现以下异常:

    解决方案 ==> [JMeter]...java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address_解决方案
    具体操作:编辑 jmeter-server 文件,将服务器的主机IP设置为固定值(与Linux服务器ifconfig查询出的实际IP保持一致)

    # One way to fix this is to define RMI_HOST_DEF below
    RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.248.138
    

    然后再次启动 jmeter-server,即可正常启动

    若出现以下异常:
    "Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
    An error occurred: Listen failed on port: 0; nested exception is:
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)"

    则修改 jmeter.properties 文件为如下:

    # Set this if you don't want to use SSL for RMI
    server.rmi.ssl.disable=true
    

    5. 上传ServerAgent至服务器,启动监控服务器资源

    1)将ServerAgent-2.2.1.zip 压缩包上传至Linux服务器,如 /usr/local/server-agent 目录下(预先在/usr/local 目录下创建server-agent目录:mkdir server-agent
    2)解压:unzip ServerAgent-2.2.1.zip

    3)查看文件权限:ls -la
    确保 startAgent.sh 具有可执行权限

    4)启动ServerAgent:./startAgent.sh
    ServerAgent默认监听4444端口,如下:

    三、Windows主控机(Master机)配置JMeter运行&监听环境

    1. 预先安装JAVA和JMeter

    在Windows主控机中,提前安装好与Linux服务器相同版本的JAVA、JMeter,并各自配置好系统环境变量
    1)JAVA环境变量:
    JAVA_HOMEC:\Program Files\Java\jdk1.8.0_91(JDK安装的目录)
    Path%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
    CLASSPATH.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;(最前面有一个点.)
    2)JMeter环境变量:
    JMETER_HOME:E:\CI_Env\apache-jmeter-4.0
    PATH:%JMETER_HOME%\bin;

    2. 配置远程主机地址

    配置文件:jmeter.properties
    配置JMeter的bin目录(E:\CI_Env\apache-jmeter-4.0\bin)下的 jmeter.properties 文件,添加 remote_hosts 远程地址和端口(Slave机对应的IP,默认端口1099),如下:

    # Remote Hosts - comma delimited
    #remote_hosts=127.0.0.1
    #remote_hosts=localhost:1099,localhost:2010
    remote_hosts=192.168.248.138:1099,127.0.0.1:1099
    

    3. 启动jmeter服务

    双击运行 jmeter-server.bat,与Linux服务器(Slave机)保持通信联通
    路径:E:\CI_Env\apache-jmeter-4.0\bin

    4. 启动JMeter GUI工具

    启动程序:jmeter.bat
    路径:E:\CI_Env\apache-jmeter-4.0\bin

    四、执行JMeter分布式测试

    1. 预先准备:录制测试脚本

    ==> [JPT_05]性能测试-脚本开发(登录&随机购买业务)

    2. 对测试脚本进行参数配置,调试脚本

    利用Badboy录制脚本,导入到JMeter的GUI操作界面中进行脚本调试

    • 变量设置:
      【User Defined Variables】
      设置参数:host=192.168.248.138(本次Linux服务器的IP)
    • 参数引用:
      ServerName or IP: ${hosts}
      Host / IP: ${hosts}

    PS:-----【Important!】-----

    【1】脚本中定义变量host,目的是为了便于脚本的复用和移植。当服务器IP变更时,只需要在【User Defined Variables】配置元件中将host取值修改,其他关联引用host的位置也会自动获取该值,而不需要每个位置都手动去修改,存在耗费时间且可能修改遗漏的风险。
    【2】连接Linux服务器时,为了确保正常执行测试,每个请求中涉及url地址的Path路径需要大小写严格书写(与Linux服务器中配置的url保持一致)。
    【3】对于JMeter4.0,若要使得其性能监控插件<Perfmon(Servers Performance Monitoring)>可正常监控展示出图像曲线,在执行测试之前,需要在【Write results to file / Read from file】的Filename选择框中添加某个自定义的jtl文件的绝对路径,如:E:\CI_Env\JM_LogResult\123.jtl(存放jtl文件的目录已提前创建好,初始时jtl文件可不存在,执行测试完成之后即会生成与自定义相同名称的jtl文件)。
    【4】JMeter脚本中若包含有【CSV Data Set Config 】配置元件配置了csv参数化的文件,需要将该参数化的文件分别上传到每一台Slave机的JMeter的bin目录下存放(与jmeter-server服务文件在同一目录),同时Master机也需要存放该参数化文件到JMeter的bin目录下;然后在JMeter的GUI界面中【CSV Data Set Config 】配置Filename为相对路径(如:username.txt),不宜采用绝对路径,否则执行测试可能异常(可查看Linux服务器中的jmeter-server.log日志文件),测试过程中Linux服务器中的测试数据可能不会返回到Windows主控机的JMeter界面中展示。
    具体可参看 ==> JMeterThread:Test failed! java.lang.IllegalArgumentException: File...must exist and be readable_解决方案

    3. 执行JMeter分布式测试

    1)执行方式选择

    【1】Run --> Remote Start --> 192.168.248.138:1099
    【2】Run --> Remote Start --> 127.0.0.1:1099
    【3】Run --> Remote Start All
    【4】Run --> Start
    <1> 调用Slave机(远程Linux服务器)上JMeter的Non-GUI模式执行测试
    <2> 调用Slave机(此处Master机本身也作为Slave机之一)执行测试
    <3> 调用所有配置过的Slave机器执行测试
    <4> 常规的执行测试方式,以当前Master机对Linux服务器执行测试

    2)设置:线程数、循环数、定时场景,启动测试

    本次选定执行方式:Run --> Remote Start All
    配置线程、循环次数(Step1配置)、定时等的设置,开启执行测试,效果如下:

    PerfMon Metrics Collector:监控服务器资源 Hits per Second Transactions per Second

    相关文章

      网友评论

        本文标题:JMeter分布式测试环境搭建 & 详细配置流程解析

        本文链接:https://www.haomeiwen.com/subject/ixhsqqtx.html