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上的[email protected] - Response Times Over Time
  5. 数据吞吐量时间曲线
    • 展示每秒数据吞吐量随时间变化的情况
    • 类似于JMeter Plugins在UI上的[email protected] - Bytes Throughput Over Time
  6. Latency time变化曲线
    • 展示Latency time随时间变化的情况
    • 类似于JMeter Plugins在UI上的[email protected] - Response Latencies Over Time
  7. 每秒点击数曲线
    • 类似于JMeter Plugins在UI上的[email protected] - Hits per Second
  8. HTTP状态码时间分布曲线
    • 展示响应状态码随时间的分布情况
    • 类似于JMeter Plugins在UI上的[email protected] - Response Codes per Second
  9. 事务吞吐量时间曲线(TPS)
    • 展示每秒处理的事务数随时间变化情况
    • 类似于JMeter Plugins在UI上的[email protected] - Transactions per Second
  10. 平均响应时间与每秒请求数的关系图
    • 展示平均响应时间与每秒请求数(可以理解为QPS)的关系
  11. Latency time与每秒请求数的关系图
    • 展示Latency time与每秒请求数的关系
  12. 响应时间百分位图
    • 响应时间的百分位分布图
  13. 活动线程数变化曲线
    • 展示测试过程中活动线程数随时间变化情况
  14. 平均响应时间与线程数的关系图
    • 展示平均响应时间与线程数的关系
    • 类似于JMeter Plugins在UI上的[email protected] - 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.0\script\test.jmx -l LogFile -e -o
    ./report

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

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

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

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

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

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

附上:

1.监听接口脚本

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="3.1" jmeter="3.1 r1770033">
  <hashTree>
    <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
      <stringProp name="filename"></stringProp>
      <stringProp name="parameters"></stringProp>
      <boolProp name="resetInterpreter">false</boolProp>
      <stringProp name="script">import java.util.regex.*;
import txtWrite.*;
import java.io.FileWriter;  
import java.io.IOException;  
import java.io.RandomAccessFile;
import org.apache.commons.io.FileUtils;
import org.apache.jmeter.assertions.AssertionResult;
import java.text.*;
import java.util.Date;
import org.apache.jmeter.functions.SamplerName;
import org.apache.jmeter.functions.AbstractFunction;
import java.lang.*;

StringBuffer aaa = new StringBuffer();
String bbb;
String ccc;
String eee;
String fff;
String sss = new SimpleDateFormat(&quot;yyyyMMdd-HH&quot;).format(new Date());
String result;
String ttt = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;).format(new Date());

bbb = prev.getResponseDataAsString();
ccc = prev.getResponseHeaders();
eee = prev.getThreadName();
fff = prev.getSampleLabel();

AssertionResult[] ddd = prev.getAssertionResults();
for (int n=0;n &lt; ddd.length;n++)
{
aaa.append(&quot;断言结果:&quot;
+ ddd[n].isFailure().toString() + &quot;|&quot; +
&quot;断言详情:&quot; + ddd[n].getFailureMessage() +
&quot;\r\n&quot;);
}

result =fff
+&quot;\r\n\r\n&quot; + &quot;本地时间:&quot; + ttt +
&quot;\r\n\r\n&quot; + eee +&quot;\r\n\r\n&quot; +
&quot;响应结果:\r\n&quot; + bbb + &quot;\r\n\r\n&quot;+
&quot;header:\r\n&quot; + ccc + &quot;\r\n&quot; + aaa +
&quot;\r\n&quot; +
&quot;============================================================================================&quot;
+ &quot;\r\n&quot;;

if (aaa.toString().contains(&quot;true&quot;))
{
File file = new File(&quot;C:\\我的文档\\jmeter脚本\\获取断言结果\\&quot;+sss+&quot;.txt&quot;);
FileUtils.write(file,result,&quot;utf-8&quot;,true);
}</stringProp>
    </BeanShellListener>
    <hashTree/>
  </hashTree>
</jmeterTestPlan>

操作步骤及注意:

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.运行-远程启动

原文地址:https://www.cnblogs.com/lisa2016/p/10645066.html

时间: 2024-10-26 01:23:56

jmeter3.1 压测的相关文章

Jmeter压测总结

emmmmm,主要是名词解释.Jmeter配置.服务器运行命令. 压测名词 QPS = 1000/RT ,即 1000ms 除以平均响应时间,即 1秒内处理多少个请求 1.关于TPS.QPS区别 我日常都会使用TPS,每秒事务数,之所以是事务这个概念,是因为我们在请求过程中会增加检查点,检查点成功就是事务成功,检查点失败就意味着失败,所以我们的请求就是一次事务,故TPS=QPS(每秒请求说),所以大部分条件下,这两个概念不用纠结的! 那么什么时候不相等呢? 举个例子,我需要进行一次查询,但这个查

在压测过程中,jmeter跑一段时间以后卡死的解决方案

Jmeter在跑压测的时候,本来设置了10分钟,但是跑到5分钟的时候就卡死了,再关了以后重新跑还是这样(图1),于是各种百度,最后解决方案如下: 右击点击编辑,记事本打开(图2) 修改后的(图3) set HEAP=-Xms256m -Xmx1024m set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m 再重启jmeter,压测的时候就不会报错了: 注意:压测的时候禁用查看结果树!

记5.28大促压测的性能优化&mdash;线程池相关问题

目录: 1.环境介绍 2.症状 3.诊断 4.结论 5.解决 6.对比java实现 废话就不多说了,本文分享下博主在5.28大促压测期间解决的一个性能问题,觉得这个还是比较有意思的,值得总结拿出来分享下. 博主所服务的部门是作为公共业务平台,公共业务平台支持上层所有业务系统(2C.UGC.直播等).平台中核心之一的就是订单域相关服务,下单服务.查单服务.支付回调服务,当然结算页暂时还是我们负责,结算页负责承上启下进行下单.结算.跳支付中心.每次业务方进行大促期间平台都要进行一次常规压测,做到心里

记5.28大促压测的性能优化—线程池相关问题

目录: 1.环境介绍 2.症状 3.诊断 4.结论 5.解决 6.对比java实现 废话就不多说了,本文分享下博主在5.28大促压测期间解决的一个性能问题,觉得这个还是比较有意思的,值得总结拿出来分享下. 博主所服务的部门是作为公共业务平台,公共业务平台支持上层所有业务系统(2C.UGC.直播等).平台中核心之一的就是订单域相关服务,下单服务.查单服务.支付回调服务,当然结算页暂时还是我们负责,结算页负责承上启下进行下单.结算.跳支付中心.每次业务方进行大促期间平台都要进行一次常规压测,做到心里

Http压测工具wrk使用指南

用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持LuaJIT和OpenSSL,不过不用担心,大多数类Unix系统都支持.安装wrk非常简单,只要从github上下载wrk源码,在项目路径下执行make命令即可. git clone https://github.com/wg/wrk make make之后,会在项目路径下生成可执行文件wrk,随后

lesson5:利用jmeter来压测消息队列(activemq)

本文讲述了利用jmeter来压测消息队列,其中消息队列采用apache的activemq,jmeter本身是支持符合jms标准消息队列的压测,由于jmeter的官方sampler配置比较复杂,本文直接使用sdk的方式来压测,与生产实际使用更加接近,各位如对官方的sampler感兴趣,可以自行去配置完成. 准备工作:下载activemq 地址:http://activemq.apache.org 本文中的activemq采用的是5.9.0版本. jMetterLessons工程源码地址:https

根据PV量来确定需要进行压测的并发量

在实际做压力测试的过程中,我们有时不知道用怎样的并发量比较好,下面是几个用PV量去确定并发量的公式,这个在我们公司是比较适用的,大家可以根据自己的业务进行运算. 方法一:这个方法是我在网上查到的80-20原则,具体运算方法为: X*0.8/(8*60*60*0.2) 说明:X为要压测页面的PV量 方法二:这个是将PV量除以高峰时段小时(比如9:00-17:00,就是8个小时),再除以60*60细化到秒,然后乘以12倍,已获得想要的并发量 (X/8/60/60)*12 说明:X为要压测页面的PV量

接口压测笔记(二)

隔了很久再来写第二篇随笔,这篇文章的内容是关于简单接口压测的记录已经报告. 上篇记录了Jmeter的简单操作已经接口的压测,这篇是对接口压测做一些记录,我目前完成公司的任务所记录下的表格. 步骤: 1.先打开我们的Jmeter压测工具,建立一个新的线程组 2.在线程组下面建立一个新的Http请求(Sampler中),以及察看结果树(看请求是否对错,以及访问接口之后返回的信息).聚合报告(吞吐率等相关数据的记录).图形报告(接口在访问过程的图形,不过这边可以不看,问题不大) 3.Http请求的地址

基于Dubbo的压测调优实例

不久前参与开发了一个基于dubbo分布式框架的底层账单系统,并实现了其中的一部分业务接口,目前需对这些接口进行压测,以评估生产环境所能承受的最大吞吐量.笔者以其中一个查询接口为例来回顾此次压测的整体流程. 压测准备: 1.调用查询接口的测试jar包,作为dubbo-consumer,依赖了查询服务的api,测试module基于maven开发,执行maven clean package即可通过编译得到jar包 2.JMeter:Apache组织开发的基于Java的压力测试工具 方案: 无限次请求查