jmeter- download installation

 


Introduction jmeter

What jmeter that?

jmeter is apache organizational development, open source, pure java stress test tool .

 

jmeter what can be used to measure?

 - | __ static resources (sent to the client's file)

        | __ dynamic resource (get different answers depending on the user)

        | __ server, network

 

 


Download & Installation & Start

step1: first confirm java installed

           

            As already installed java, can step2. Otherwise, first download and install java (java download address http://www.oracle.com/technetwork/java/javase/downloads/index.html )

step2: jemeter official website to download it

           http://jmeter.apache.org/

           Specific reference download process ( https://www.jianshu.com/p/0e4daecc8122 )

step3: Start jmeter in the download path

          ➜  bin pwd

         / Users / liurong07 / Downloads / Download software _ / the Apache-jmeter-3.3 / bin

         ➜  bin sh jmeter.sh

          

          

          After starting:

         


use

The concept of science

Thread Group: jmeter java is implemented using a java thread to simulate a user. So the thread group is a set of virtual users.

 

Application Example 1 (GUI mode / http web stress test)

(对ark.baidu.com网页做压力测试)

配置虚拟用户

  • 添加一个线程组

       

 

  • 填写线程组参数

                   

                  线程数100:说明这个小组ark_community_group0里面有100个虚拟用户。

                  Ramp-Up Period(in seconds): 设定了一个时间值。100个用户在1s时间内陆续开始访问网页。

                  循环次数:每个虚拟用户访问完网址的循环次数。如果设定1次表示虚拟用户访问后就退出了。如果是永远,则每次访问完都持续访问直到强制停止。

                  所以这一组参数表示:ark_community_group0这个小组里面有100个虚拟用户,它们在1s内陆续访问ark社区,访问完后会退出。

配置访问网页

                

查看结果

               

 

               添加监听器(查看结果树、聚合报告、用表格察看结果、生成概要结果)之后:

               

             

            

             

 

            聚合报告分析(时间单位ms)

            聚合报告是累加的,每次运行结果都在原来基础上累计统计。

            

            字段详情

            Average:单次请求的平均响应时间

            Median:中位数,50%的响应时间<=9s

            90%Line: 九分位数,90%的响应时间<=19s。   95%Line,99%Line同理。

            Min,Max:最小响应时间、最大响应时间。

            Error%:请求错误的样本占比。

            Throughput:接收并转发的最大数据速率。

            Recived、Sent:接受、传输速率。

 

 

使用举例2(命令行模式/http网页压力测试)

            测试配置文件ark_community_group2.jmx保存下来

            

           用命令行跑配置文件,测试结果记录在ark_community_group2_log.jtl

           

            也可以用GUI察看jtl报告

            

 

使用举例3(分布式发压测试)

原理

为什么做分布式压测?

       如果在一台机器上做压测,并发数很大(千、万以上),会超过单台机器的CPU、内存承受限度。解决办法:一台机器做控制机控制多台子执行机,多个子执行机一起来分担压测任务。

分布式压测怎么做?

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

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

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

分布式压测步骤

          举例说明:master机器上执行分布式测试,执行过程中把**.jmx测试配置文件分配给slave机器执行,并收集slave执行后的结果**.jtl。

      

(step1)准备

          master和slave上都要安装jmeter,且都关闭防火墙

(step2)配置

        (1)master机器配置   

           bin/jmeter.properties里面的remote_hosts字段配置上slave机器的ip(172.24.181.253)

           

           

            (2)   slave机器配置

            slave机器的bin/jmeter-server文件的 RMI_HOST_DEF字段配置上自己本机ip(172.24.181.253)

(step3)GUI方式启动   

            (1)在slave机器上启动server即可(注意slave上的server先启动哦)

                      sh jmeter-server

 

              (2) 在master机器上启动jmeter客户段(一定要在slave的server启动后启动啊)

                      

                     查看结果:

                     

(step4)命令行方式启动

    在master上执行命令:

    如果需要指定某一台slave(172.24.181.253)执行测试脚本:

     sh jmeter.sh -n -t ark_community_group2.jmx -R 172.24.181.253 -l w.jtl 

     例如下面的例子:(sh jmeter.sh -n -t ark_community_group2.jmx -R 10.99.197.118,10.99.195.114,10.94.221.96,10.94.63.53 -l ark03_04_05_junheng184.jtl)

     查看w.jtl执行结果,看到运行成功:

     

     

     如果需要指定全部的slave都跑脚本,就用这个命令:

     sh jmeter.sh -n -t ark_community_group2.jmx -r -l result1.jtl  

     和GUI模式的效果等价:

              

 

注意事项

     常遇到远程启动时链接失败问题,需要确保以下关键点

     1. master和slave的防火墙要关闭,master和slave可以ping通

     2. master和slave的jmeter尽量保持版本一致

     3. jmx配置文件没有必要拷贝到slave上,因为master的远程启动开始后,它自动会分配给slave去执行。

     4. jmx配置的线程数目是100的话,每个slave按照jmx的配置数目执行,所以每个slave执行线程数目也是100,并不是分担100的一部分。

     5. slave能够承受多大的线程数呢,万一slave被打爆了?

         slave机器能够处理线程数和自身的硬件参数有关,举例如果slave的CPU是1.4G-3GHZ,内存是1G内存,可以处理线程数100-300,建议配置不超过100(考虑到承担的任务有可能是xml计算密集型或者网卡交换机影响)

         

     

     参考:

     分布式压测遇到的坑

     http://www.mamicode.com/info-detail-1729730.html

     https://www.cnblogs.com/Fine-Chan/p/6233823.html

     http://www.cnblogs.com/saryli/p/6596015.html

     http://blog.163.com/lucas_nina/blog/static/185960149201492945117318/(硬件参数与建议线程数)


其他场景补充

场景1. 同一个机器上同时启动2个(多个)jmeter-server

            可以启动多个,比如在一台机器上启动2个jmeter-server

            配置过程:

            (step-1)slave端配置

            jmeter-slave所在的bin目录下复制出一份jmeter-server2文件,并修改其中端口号为1199:

            ${DIRNAME}/jmeter ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-1199} -s -j jmeter-server.log "$@"

            启动jmeter-server、jmeter-server2,查看端口已经启动ok:

[work@cp01-ark03 ~]$ netstat -tunpl|grep 1099
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 :::1099                     :::*                        LISTEN      13156/java          
[work@cp01-ark03 ~]$ netstat -tunpl|grep 1199
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 :::1199                     :::*                        LISTEN      14616/java   

            (step-2) master端配置

            jmeter-master的jmeter.properties文件配置:

remote_hosts=10.99.197.118:1099,
 244 10.99.197.118:1199, 

 

         (step-3)调度方法

sh jmeter.sh -n -t ark_community_group2.jmx -R 10.99.197.118:1199,10.99.197.118:1099 -l 118.jtl

            ⚠️如果不指定端口号,这样直接调用的话就使用1099端口号跑脚本,1199端口没有跑(sh jmeter.sh -n -t ark_community_group2.jmx -R 10.99.197.118 -l 118.jtl)或者(sh jmeter.sh -n -t ark_community_group2.jmx -R 10.99.197.118,10.99.197.118 -l 118.jtl)

           

遗留问题

 

同一个线程组下面,能不能拆分成比例去访问http?

path的参数可变化设置

slave的守候进程是什么时候起来的,每个slave分担任务量是怎样?(slave-master怎么交互)(master-slave的部署是不是需要在一个网段下)

断言

 

 

 


 

 

 

 

 


相关参考

静态资源、动态资源

http://blog.csdn.net/u012110719/article/details/44239429

jmeter百科

https://baike.baidu.com/item/Jmeter/3104456?fr=aladdin

jmeter下载安装

https://www.cnblogs.com/ceshisanren/p/5639895.html

https://www.jianshu.com/p/0e4daecc8122

jmeter聚合报告分析

https://www.cnblogs.com/Uther/p/5292123.html

Custom Script mode:
https://www.cnblogs.com/linglingyuese/articles/linglingyuese-two.html

JTL format parsing
https://www.cnblogs.com/miaomiaokaixin/p/6118081.html

Distributed Introduction

https://www.cnblogs.com/puresoul/p/4844539.html

http://blog.csdn.net/wuhenyan/article/details/53117556

Examples of jmeter pressure measured thrift

http://blog.csdn.net/mn960mn/article/details/50684877

http://blog.csdn.net/cmrsautomation/article/details/53357976

Custom header

http://blog.csdn.net/difffate/article/details/73442130

 


 

 

Guess you like

Origin www.cnblogs.com/liurong07/p/11202752.html