zoukankan      html  css  js  c++  java
  • Jmeter之http性能测试实战 NON-GUI模式 进行分布式压力测试——干货(十二)(转载)

    转载自:https://www.cnblogs.com/Lam7/p/6833501.html

    Apache JMeter Distributed Testing Step-by-step

    This short tutorial explains how to use multiple systems to perform stress testing. Before we start, there are a couple of things to check.

    • the firewalls on the systems are turned off or correct ports are opened.
    • all the clients are on the same subnet.
    • the server is in the same subnet, if 192.x.x.x or 10.x.x.x IP addresses are used. If the server doesn't use 192.xx or 10.xx IP address, there shouldn't be any problems.
    • Make sure JMeter can access the server.
    • Make sure you use the same version of JMeter and Java on all the systems. Mixing versions will not work correctly.

    Once you've made sure the systems are ready, it's time to setup remote testing. The tutorial assumes you already have JMeter installed on all the systems. The way JMeter works is one master controller initiates the test on multiple slave systems.

    Before we dive into the step-by-step instructions, it's a good idea to define the terms and make sure the definition is clear.

    Master
    the system running JMeter GUI, which controls the test
    Slave
    the system running jmeter-server, which takes commands from the GUI and send requests to the target system(s)
    Target
    the webserver we plan to stress test
    1. On the slave systems, go to jmeter/bin directory and execute jmeter-server.bat(jmeter-server on unix).
    2. On master system acting as the console, open windows explorer and go to jmeter/bin directory
    3. Open jmeter.properties in a text editor
    4. Edit the line remote_hosts=127.0.0.1
    5. Add the IP address. For example, if I have JMeter server running on 192.168.30.50:1099, …, 192.168.30.51:1099,the entry would like like this:
    6. Start JMeter.
    7. Open the test plan you want to use

     Start a single clients

    1. Click Run at the top
    2. Select Remote Start
    3. Select the IP address

    Start all clients

    1. Click Run at the top
    2. Select Remote Start all or use Ctrl + Shift + R

    Limitations

    There are some basic limitations for distributed testing. Here's the list of the known items in no specific order.

    1. RMI cannot communicate across subnets without a proxy; therefore neither can JMeter without a proxy.
    2. Since version 2.9, JMeter sends all the test results stripping Response data to the controlling console, this allows us to reduce impact on network IO. Ensure you monitor your network traffic so that this trafic does not incur contention
    3. A single JMeter client running on a 2-3 GHz CPU (recent CPU) can handle 1000-2000 threads depending on the type of test.

    简单点的说

    Jmeter分布式执行原理:

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

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

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

    术语解析

    • master,以GUI模式运行,同时控制测试的运行,在这里就是client,启动脚本所在的那台机器。
    • slave,运行jmeter-server并从master接收指令、向目标服务器发送请求
    • 设置jmeter-server:

      用文本编辑器打开Jmeter/bin目录下的jmeter.properties文件,添加运行jmeter-server的主机IP到remote_hosts

      remote_hosts=192.168.30.50:1099,192.168.30.51:1099,localhost.....

     如果你不希望你的客户端也作为jmeter-server运行的话,把localhost从上面的配置中移除。

    小白解释分割线

     ----------------------------------------------------------

    再白痴点的解释就是   有 A B C  三台压力机器,属于同一个内网IP

    A作为 Master

    B跟C两台作为slave

    通过A去控制B跟C进行压测服务器
    在压测的过程中 需要先开启B跟C的Jmeter的bin目录下的jmeter-server.bat 服务

    然后通过A去进行NON-GUI模式去压测,B跟C分布式的压测结果会反馈到A

    -----------------------------------------------------------

    小白解释结束线

    下面进行实战命令 压测

    通过 jmeter -l 的帮助命令可以查看到

    复制代码
    C:UserslamwDesktoplamw
    λ D:Jmeterjmeter-3.1injmeter -l
    Error: Missing argument to option -l
    Usage
            --?
                    print command line options and exit
            -h, --help
                    print usage information and exit
            -v, --version
                    print the version information and exit
            -p, --propfile <argument>
                    the jmeter property file to use
            -q, --addprop <argument>
                    additional JMeter property file(s)
            -t, --testfile <argument>
                    the jmeter test(.jmx) file to run
            -l, --logfile <argument>
                    the file to log samples to
            -j, --jmeterlogfile <argument>
                    jmeter run log file (jmeter.log)
            -n, --nongui
                    run JMeter in nongui mode
            -s, --server
                    run the JMeter server
            -H, --proxyHost <argument>
                    Set a proxy server for JMeter to use
            -P, --proxyPort <argument>
                    Set proxy server port for JMeter to use
            -N, --nonProxyHosts <argument>
                    Set nonproxy host list (e.g. *.apache.org|localhost)
            -u, --username <argument>
                    Set username for proxy server that JMeter is to use
            -a, --password <argument>
                    Set password for proxy server that JMeter is to use
            -J, --jmeterproperty <argument>=<value>
                    Define additional JMeter properties
            -G, --globalproperty <argument>=<value>
                    Define Global properties (sent to servers)
                    e.g. -Gport=123
                     or -Gglobal.properties
            -D, --systemproperty <argument>=<value>
                    Define additional system properties
            -S, --systemPropertyFile <argument>
                    additional system property file(s)
            -L, --loglevel <argument>=<value>
                    [category=]level e.g. jorphan=INFO or jmeter.util=DEBUG
            -r, --runremote
                    Start remote servers (as defined in remote_hosts)
            -R, --remotestart <argument>
                    Start these remote servers (overrides remote_hosts)
            -d, --homedir <argument>
                    the jmeter home directory to use
            -X, --remoteexit
                    Exit the remote servers at end of test (non-GUI)
            -g, --reportonly <argument>
                    generate report dashboard only, from a test results file
            -e, --reportatendofloadtests
                    generate report dashboard after load test
            -o, --reportoutputfolder <argument>
                    output folder for report dashboard
    
    Error: Missing argument to option -l
    复制代码

    其中

    -r, --runremote    

    Start remote servers (as defined in remote_hosts)------------------启动远程服务器(如remote_hosts中定义)
    -R, --remotestart <argument>
    Start these remote servers (overrides remote_hosts)-------------------启动这些远程服务器(覆盖remote_hosts)

    那么我们就可以去选择执行所有的配置中的压测机器

    D:Jmeterjmeter-3.1injmeter.bat -n -r -t test.jmx -l test.csv -e -o test

    可以看到已经成功执行了配置中的2台压测机

    PS 如果压测指标是1000并发数,比如我们现在配置了2台需要达到1000并发数,那么就是一台压测并发数500即可

  • 相关阅读:
    XML Schema
    Magento 2 instantiate object by Factory Objects
    Magento 2 Factory Objects
    UML类图与类的关系详解
    Magento add product attribute and assign to all group
    MyISAM 和InnoDB的区别
    Finding the Right EAV Attribute Table
    Implement Trie (Prefix Tree)
    Graph Valid Tree
    Maximum Subarray III
  • 原文地址:https://www.cnblogs.com/yuany66/p/10978139.html
Copyright © 2011-2022 走看看