zoukankan      html  css  js  c++  java
  • jmeter3.1 压测

    压测目标:error 为0,线程起到250,服务器配置达到最大

    一.Jmeter3.1 压测

    JMeter3.1提供一个用于生成HTML页面格式图形化报告的扩展模块。该模块支持通过两种方式生成多维度图形化测试报告:

    1. 在JMeter性能测试结束时,自动生成本次测试的HTML图形化报告
    2. 使用一个已有的结果文件(如CSV文件)来生成该次结果的HTML图形化报告

    其默认提供的度量维度包括:

    1. APDEX(Application Performance Index)指数
    2. 聚合报告
      • 类似于UI上的Aggregate Report
    3. Errors报告
      • 展示不同错误类型的数量以及百分比
    4. 响应时间变化曲线
      • 展示平均响应时间随时间变化情况
      • 类似于JMeter Plugins在UI上的jp@gc - Response Times Over Time
    5. 数据吞吐量时间曲线
      • 展示每秒数据吞吐量随时间变化的情况
      • 类似于JMeter Plugins在UI上的jp@gc - Bytes Throughput Over Time
    6. Latency time变化曲线
      • 展示Latency time随时间变化的情况
      • 类似于JMeter Plugins在UI上的jp@gc - Response Latencies Over Time
    7. 每秒点击数曲线
      • 类似于JMeter Plugins在UI上的jp@gc - Hits per Second
    8. HTTP状态码时间分布曲线
      • 展示响应状态码随时间的分布情况
      • 类似于JMeter Plugins在UI上的jp@gc - Response Codes per Second
    9. 事务吞吐量时间曲线(TPS)
      • 展示每秒处理的事务数随时间变化情况
      • 类似于JMeter Plugins在UI上的jp@gc - Transactions per Second
    10. 平均响应时间与每秒请求数的关系图
      • 展示平均响应时间与每秒请求数(可以理解为QPS)的关系
    11. Latency time与每秒请求数的关系图
      • 展示Latency time与每秒请求数的关系
    12. 响应时间百分位图
      • 响应时间的百分位分布图
    13. 活动线程数变化曲线
      • 展示测试过程中活动线程数随时间变化情况
    14. 平均响应时间与线程数的关系图
      • 展示平均响应时间与线程数的关系
      • 类似于JMeter Plugins在UI上的jp@gc - Response Times vs Threads
    15. 柱状响应时间分布图
      • 展示落在各个平均响应时间区间的请求数情况

    - Latency time = 接收到响应的第一个字节的时间点 - 请求开始发送的时间点

    from just before sending the request to just after the first response has been received
    -- Apache JMeter Glossary

    - 响应时间(JMeter术语中的Elapsed time) = 接收完所有响应内容的时间点 - 请求开始发送的时间点

    from just before sending the request to just after the last response has been received
    -- Apache JMeter Glossary

    二.配置参数修改

    1.确认基本配置

    • 在jmeter.properties或者user.properties确认如下配置项:

    jmeter.save.saveservice.data_type=true
    jmeter.save.saveservice.label=true
    jmeter.save.saveservice.response_code=true
    # response_data is not currently supported for CSV output
    jmeter.save.saveservice.response_data=true
    # Save ResponseData for failed samples
    jmeter.save.saveservice.response_data.on_error=false
    jmeter.save.saveservice.response_message=true
    jmeter.save.saveservice.successful=true
    jmeter.save.saveservice.thread_name=true
    jmeter.save.saveservice.time=true
    jmeter.save.saveservice.subresults=true
    jmeter.save.saveservice.assertions=true
    jmeter.save.saveservice.latency=true
    jmeter.save.saveservice.connect_time=true
    jmeter.save.saveservice.samplerData=true
    jmeter.save.saveservice.responseHeaders=true
    jmeter.save.saveservice.requestHeaders=true
    jmeter.save.saveservice.encoding=false
    jmeter.save.saveservice.bytes=true
    jmeter.save.saveservice.url=true
    jmeter.save.saveservice.filename=true
    jmeter.save.saveservice.hostname=true
    jmeter.save.saveservice.thread_counts=true
    jmeter.save.saveservice.sample_count=true
    jmeter.save.saveservice.idle_time=true

    # Timestamp format - this only affects CSV output files
    # legitimate values: none, ms, or a format suitable for SimpleDateFormat
    jmeter.save.saveservice.timestamp_format=ms
    jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

    • 如果希望在Errors报告中展示更详细数据,需要确保如下配置
      • jmeter.save.saveservice.assertion_results_failure_message = true
      • 如果使用了事务控制器(Transaction Controller),确认Generate parent sample为未勾选状态

    2.生成报告

    a. 在压力测试结束时报告

    • 基本命令格式:
      jmeter -n -t <test JMX file> -l <log file> -e -o <Path to output folder>
    • 样例:
      jmeter -n -t E:apache-jmeter-3.0script est.jmx -l LogFile -e -o ./report

    b. 使用已有的压力测试CSV日志文件生成报告

    • 基本命令格式:
      jmeter -g <log file> -o <Path to output folder>
    • 样例:
      jmeter -g E:apache-jmeter-3.0inLogFile -o ./report

    两个样例都会在apache-jmeter-3.0in eport目录下产生如下文件(夹):

    用浏览器打开index.html文件,即可查看各种图形化报告:

     

    注:在3.1版本,由于源码中字符编码的问题,可能会遇到生成的报告中,中文标签展示为乱码的问题

      解决方案:修改JMeter report模块读取数据源码中的字符集设置为UTF-8,编译后替换到JMETER_HOMElibextApacheJMeter_core.jar

     

     附上:

    1.监听接口脚本

     1 import java.util.regex.*;
     2 import txtWrite.*;
     3 import java.io.FileWriter;  
     4 import java.io.IOException;  
     5 import java.io.RandomAccessFile; 
     6 import org.apache.commons.io.FileUtils;
     7 import org.apache.jmeter.assertions.AssertionResult;
     8 import java.text.*;
     9 import java.util.Date;
    10 import org.apache.jmeter.functions.SamplerName;
    11 import org.apache.jmeter.functions.AbstractFunction;
    12 import java.lang.*;
    13 
    14 StringBuffer aaa = new StringBuffer();
    15 String body;
    16 String header;
    17 String name;
    18 String label;
    19 String mydate = new SimpleDateFormat("yyyyMMdd-HH").format(new Date());
    20 String result;
    21 String mytime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    22 
    23 body = prev.getResponseDataAsString();
    24 header = prev.getResponseHeaders();
    25 name = prev.getThreadName();
    26 label = prev.getSampleLabel();
    27 
    28 AssertionResult[] re = prev.getAssertionResults();
    29 for (int n=0;n < re.length;n++)
    30 {
    31 aaa.append("断言结果:" + re[n].isFailure().toString() + "|" + "断言详情:" + re[n].getFailureMessage() + "
    ");
    32 }
    33 
    34 result =fff +"
    
    " + "本地时间:" + mytime + "
    
    " + label +"
    
    " + "响应结果:
    " + body + "
    
    "+ "header:
    " + header + "
    " + aaa + "
    " + "============================================================================================" + "
    "; 
    35 
    36 if (aaa.toString().contains("true"))
    37 {
    38 File file = new File("e:\script\log\"+mydate+".txt");
    39 FileUtils.write(file,result,"utf-8",true);
    40 }

    断言结果

      操作步骤及注意:

    1.将脚本放到d盘
    命令行切换到jme/bin目录下,执行命令
    jmeter -n -t d:9000-jmeter.jmx -l LogFile -e -o ./10report


    2.
    每执行一次,删除目录下的:LogFile,10report
    命令行显示结果每30s刷新一次
    3.查看bin目录下的10report目录下index.html文件,查看执行结果
    chart-overtime-active threads over time,启动线程数
    apdex:健康
    Statistics:结果数据
    4.BeanshellListener显示执行结果
    5.分布式部署
    代理机:
    1.jdk,jmeter环境
    2.输入“ipconfig”,找到IP地址,例如是:192.168.8.149
    3.配置jmeter.properties
    打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099,1099是端口号
    4.启动jmeter-server.bat,
    主机:
    1.配置jmeter.properties
    Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099,192.168.8.174:1099,1099是端口号,可以随意自定义。如果有多台代理机,这里需要把所有的代理机的IP地址和端口号都加入进来。
    2.打开jmeter-server.bat文件,设置完成了
    3.启动jemter.bat文件
    4.运行-远程启动

  • 相关阅读:
    Python使用pymysql模块插入数据报错
    layui的select标签样式没有加载出来
    Python计算平均数
    Django获取小时内的数据
    mysql5.0忘记登录密码
    数据库介绍
    Linux基础
    测试理论
    计算机基础
    chrome 70 一下载文件就卡死
  • 原文地址:https://www.cnblogs.com/lisa2016/p/10645066.html
Copyright © 2011-2022 走看看