当前位置: 首页 > 编程日记 > 正文

jmeter分析性能报告时的误区

概述

我们用jmeter做性能测试,必然需要学会分析测试报告。但是初学者常常因为对概念的不清晰,最后被测试报告带到沟里去。

常见的误区

  • 分析响应时间全用平均值
  • 响应时间不和吞吐量挂钩
  • 响应时间和吞吐量不和成功率挂钩

。。。。。

平均值特别不靠谱

平均值为什么不靠谱?相信大家读新闻的时候经常可以看到,平均工资平均房价平均支出,等等字眼,你就知道为什么平均值不靠谱了。

(这些都是数学游戏)

性能测试也一样,平均数也是不靠谱,推荐一篇详细的文章《Why Averages Suck and Percentiles are Great》

我们做性能测试时,得到的结果数据不会总是一样的,而是波动的。

如果算平均值就会出现这样的情况:测试了10次,有9次是1ms,而有1次是10s,那么平均数据就是1s。

很明显,这完全不能反应性能测试的实际情况,因为那个10s的请求就是一个不正常的值。

另外,中位数(Median)可能会比平均数要稍微靠谱一些,中位数的意就是把将一组数据按大小顺序排列,处在最中间位置的一个数叫做这组数据的中位数 ,这意味着有50%的数据低于或高于这个中位数。

最为正确的统计做法是用百分比分布统计。TP50的意思是50%的响应时间都小于某个值,TP90表示90%的响应时间小于某个值。

我们有一组数据:[ 10ms,  1s, 200ms, 100ms],我们把其从小到大排个序:[10ms, 100ms, 200ms, 1s]。

于是我们知道,TP50,就是50%的请求ceil(4*0.5)=2时间是小于100ms的,TP90就是90%的请求ceil(4*0.9)=4时间小于1s。

于是:TP50就是100ms,TP90就是1s

因此,通常严格一点的响应时间要求是这样的:99%的请求必须小于XXms

响应时间务必和吞吐量(Thoughput)挂钩

系统的性能如果只看吞吐量,不看响应时间是没有意义的。

我的系统tps可以达到10000,但是响应时间已经到了20秒钟,这样的系统已经不可用了,吞吐量也是没有意义的。

当负载上升的时候,系统会逐渐变的不稳定,响应时间也会变得越来越慢,波动越来越大,而吞吐率却开始下降,包括CPU的使用率情况也会如此。

所以,当系统变得不稳定的时候,吞吐量已经没有意义了。

所以,吞吐量的值必需配合响应时间来看。例如:TP99小于100ms的时候,系统可以承载的最大并发数是1000

 

响应时间吞吐量和成功率要挂钩

应该不难理解,如果请求都是错误的,还做什么性能测试。

比如,我说我的系统并发可以达到10万,但是失败率是50%,那么这10万的并发完全就是一个笑话。

性能测试的失败率的容忍是非常低的。对于一些关键系统,成功率必须在100%

转载于:https://www.cnblogs.com/Zfc-Cjk/p/11152360.html

相关文章:

const的位置

2019独角兽企业重金招聘Python工程师标准>>> 1.指向常量的指针 const 类型 * 指针名 或者 类型 const * 指针名特点:不能修改指向的对象的值,可以修改指针的指向int var11; const int var22; const int * p1&var1; const int * p2&var2; *p1100;…

zookeeper入门系列 : 分布式事务

上一章我们了解了zookeeper到底是什么,这一章重点来看zookeeper当初到底面临什么问题?而zookeeper又是如何解决这些问题的? 实际上zookeeper主要就是解决分布式环境下的一致性问题。那么解决这个问题到底有哪些难点呢?我们一步一步…

rdlc报表显示条码 .

1.条码的生成: private Bitmap GetCode39(string strSource) { int x 5; //左邊界 int y 0; //上邊界 int WidLength 2; //粗BarCode長度 int NarrowLength 1; //細BarCode長度 …

python列表(数组)

python列表(数组) 列表(list) 就是 数组 - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只能保存一…

【js】common.jsp的使用

通过将引入common.jsp将所有文件都需要的内容或静态资源引入&#xff0c;相当于一个页面&#xff0c;在页面被编译之前合并。 代码实现 <% include file "common.jsp的相对路径"%> 注意&#xff1a; <% page language"java" contentType&quo…

12th,Jan 研究生创新项目申报成功

今天的好消息是研究生创新项目申报成了&#xff0c;省里拨下来是1.8k&#xff0c;本来学校应该配3.6k&#xff0c;但是按照以往的经验&#xff0c;学校那3.6k是不会给的。。。所以总共就1.8k&#xff0c;呵呵&#xff0c;钱虽然不多&#xff0c;但是也是个小小小的成就吧。 昨晚…

Android studio中2种build.gradle文件介绍

根目录下的build.gradle通常不需要修改这个文件中的内容&#xff0c;除非需要添加一些全局的项目构建配置 buildscript {repositories {google() //声明代码托管仓库Googlejcenter() //声明代码托管仓库&#xff0c;用于引用jcenter上的开源项目}dependencies {classpath …

10个有趣的javascript和css库(2019年5月最新)

我们的使命是让您了解最新和最酷的Web开发趋势。这就是为什么我们每个月都会发布一些精选的资源&#xff0c;这些资源是我们偶然发现并认为值得您关注的。 1.Tessaract.js 强大的javascript&#xff08;节点和浏览器&#xff09;库&#xff0c;用于从图像中提取文本。它能自动检…

快速开发rails、==常用插件==

1、简化css编写的&#xff1a;sass http://sass-lang.com/download.html 2、简化html编写的:haml http://haml-lang.com/转载于:https://www.cnblogs.com/klobohyz/archive/2011/10/31/2230080.html

【js】绑定事件的两种方法

方法一&#xff1a; 为需要绑定事件的标签添加一个属性onclick 代码实现&#xff1a; <input type"button" value"测试按钮" onclick"testClick()" /> 方法二&#xff1a; 用jquery方法绑定事件 代码实现&#xff1a; <input id&…

对于学习方式的一些思考

再牛X的书都不要太当回事儿&#xff0c;书只是知识的一个载体&#xff0c;掌握知识的途径之一。学习的过程应该是由一个个知识模块所驱动的&#xff0c;继而去调动身边的学习资源和工具&#xff0c;而不是被一本本所谓的牛书生拉硬拽着去学一大套可能永远都用不到的东西。“知识…

python开发环境安装

PyCharm的安装地址&#xff1a;http://www.jetbrains.com/pycharm/download/#sectionwindows&#xff0c;免费的可以选择社区版本 Python解释器的安装地址&#xff1a;https://www.python.org/downloads/&#xff0c;选择对应的平台及版本下载&#xff0c;安装时勾选 添加到环…

HGOI 20190709 题解

Problem A 紫色激情 一个序列$\{a_n\}$&#xff0c;求出方差最大的子序列。 其中方差 [l,r] 的定义是$S^2 \frac{1}{n} \sum\limits_{il}^{r} (x_i-\bar{x})^2$ 对于100%的数据满足$n \leq 10^3$ Sol : 直接推一波公式就可以前缀和优化了。 ${ S_{l,r} }^2 -\bar{x}^2 \frac{…

C++标准库简介(转)

C标准库的所有头文件都没有扩展名。C标准库的内容总共在50个标准头文件中定义&#xff0c;其中18个提供了C库的功能。 <cname>形式的标准头文件【 <complex>例外】其内容与ISO标准C包含的name.h头文件相同&#xff0c;但容纳了C扩展的功能。在 <cname>形式标…

【jquery】$.each的使用方法

代码实现&#xff1a; $.each(goodsArray, function(index){if(goods.barCode goodsArray[index].barCode){goodsArray[index].count;boo true;return; }});

MyEclipse插件安装

一、安装方法&#xff1a; 方法一、如果可以上网可在线安装 1. 打开Myeclipse&#xff0c;在菜单栏中选择Help→Software Updates→Find and Install; 2. 选择Search for new features to install&#xff0c;点击Next进入下一步; 3. 点击"New Remote Site"按钮&…

软件质量与测试 第4周小组作业

一、项目地址 https://github.com/changjiang666/WcPro 二、PSP 三、设计思路 我负责main函数的编写和print输出模块的编写。 1.main函数 int main(/*int argc, char **argv*/) {char *textBuf readfile("test.txt"); // 读取输入文件WcPro wcpro(textBuf);// 将输入…

UVA 10714 - Ants

这道题是要我们找出所有蚂蚁中最靠近端点和最靠近中间的蚂蚁所在的位置&#xff0c;计算端点的蚂蚁爬到另一个 端点的时间和计算靠近中间的蚂蚁爬到离他近的端点的时间。我们只需分输入的位置在棒的左边还是右边 来讨论就行。 #include<iostream>using namespace std;int…

Mysql Cluster 集群 windows版本

VM1&#xff1a;192.168.220.102 管理节点(MGM) VM2&#xff1a;192.168.220.103 数据节点(NDBD1)&#xff0c;SQL节点(SQL1) VM3&#xff1a;192.168.220.104 数据节点(NDBD2)&#xff0c;SQL节点(SQL2) MySQL Cluster版本&#xff1a;7.4.6 (MSI Installer) 下载地址&…

【js】通过js代码改变html表单中的数据

代码实现&#xff1a; document.getElementById("sum").innerHTML sum;

Asp.net MVC 3实例学习之ExtShop(五)——产品详细页

在产品详细页需要使用到tab控件&#xff0c;在jquery的ui包已包含改控件&#xff0c;因而将相应文件链接加到母版页就可以了。 打开“ProductController”文件&#xff0c;在里面添加一个Details操作&#xff0c;代码如下&#xff1a; 1 public ActionResu…

linux安装配置postgres及使用dblink

好久不写东西&#xff0c;一直在看些开源的东西&#xff0c;下面贴下linux上安装配置postgres及使用dblink的操作参考&#xff0c;以供读者和自己今后参考&#xff1a; 1、下载源码&#xff1a;postgresql-9.3.2.tar.gz 2、创建postgres cluster组和用户&#xff1a; groupadd …

从瀑布模型、极限编程到敏捷开发

从瀑布模型、极限编程到敏捷开发---软件开发管理者思维的变化Jack zhai软件开发是一种对人类智慧的管理&#xff0c;对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元&#xff0c;这与冰冷的机器是不可比的&#xff0c;所以在中国的历史上&a…

递归和循环:跳台阶和变态跳台阶和矩形覆盖

题目描述 跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法&#xff08;先后次序不同算不同的结果&#xff09;。变态跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上…

【js】将json类型的数组或对象转为字符串

代码实现&#xff1a; JSON.stringify(goodsList); 注&#xff1a;该用法多用于数据的传输&#xff0c;如页面于servlet的数据传输不能使用gson的数组直接传输&#xff0c;使用该方法便可解决问题。

Android XML pull 解析器

Android 并未提供对 Java StAX API 的支持。但是&#xff0c;Android 确实附带了一个 pull 解析器&#xff0c;其工作方式类似于 StAX。它允许您的应用程序代码从解析器中获取事件&#xff0c;这与 SAX 解析器自动将事件推入处理程序相反。清单 10 显示了提要解析接口的一个 pu…

Zepto.js库touch模块代码解析

Zepto.js也许并不陌生&#xff0c;专门针对移动端开发&#xff0c;Zepto有一些基本的触摸事件可以用来做触摸屏交互&#xff08;tap事件、swipe事件&#xff09;&#xff0c;Zepto是不支持IE浏览器的。 下面来解析一些Zepto.js触摸事件的解析&#xff1a; 1.触摸事件离不开:tou…

PHP 常用字符串处理代码片段

移除 HTML 标签 $text strip_tags($input, ""); 返回 $start 和 $end 之间的文本function GetBetween($content,$start,$end){ $r explode($start, $content); if (isset($r[1])){ $r explode($end, $r[1]); return $r[0]; } ret…

【maven】初识maven

一&#xff1a;maven的配置&#xff1a; 集成到eclipse步骤&#xff1a; 1、下载maven&#xff0c;放到软件安装目录&#xff0c;打开目录&#xff1a;MAVEN_HOME/conf/ 2、修改文件setting.xml&#xff1a;仓库配置目录&#xff1a;<localRepository>D:\DATA\lo…

[C++再学习系列] 函数模板和类模板

函数模板和类模板 C 提供类模板和函数模板。函数模板允许重载 &#xff0c;而类模板不允许重载(类无重载概念)。类模板可以进行全特化和偏特化&#xff0c;而函数模板仅能够全特化 。因此&#xff0c;写一个看似函数模板偏特化的函数模板实际上是在写一个单独的主函数模板&…