最近有一个测试任务,是测试nginx的并发请求到底能够达到多少的,

于是就用ab工具对其进行压力测试。

这压力测试一执行,问题就来了:发起10000次请求,并发100,错误的情况能达到30%--50%了!

不应该有这么多啊?哪儿出问题了?于是就用loadrunner 和jemeter做了同样的测试,失败率为0,响应时间也差不多。这不科学啊?

没有办法,只好去百度google一下,大多数结果说的是apache ab工具的使用方法,参数介绍,结果分析什么的。一直没有想要的结果,最后找到了:http://stackoverflow.com/questions/579450/load-testing-with-ab-fake-failed-requests-length

上面是全英语的,讲到了这个问题。

The apache benchmarking tool (ab) assumes that length of response content will be the same during entire test.

if the connection is closed server-side before the total amount of bytes declared in the Content-Length header has not been received by the client. That can happen if there are other parties between the client and the server, for example, naive handcrafted load balancers (my case).

大概是说如果返回的内容长度不一样,或是连接断了就会出现错误。先分析一下连接吧,我们的网络是非常好的,而且测试端和被测试的对象机器在同一网段,网络是没有任何问题的。

现在就分析一下内容的长度了,因为我是对同一个查询发起的请求,按原理来说结果不会不一样啊?于是就将请求的结果打到日志中好好分析一下,最好才发现原来返回结果中有一个:“took”字段,这个字段标识的是每次请求所花费的时间。并发请求的时候,所花费的时候肯定是不会一样的,如果时间不一样,就导致返回结果长度不同,于是ab就给记录成failure了,这是ab的一个Bug,我们没有办法解决。找到了问题所在,就好办了,最后换成其他的压力测试工具来测试。

总结:

一,     遇到问题的时候,不能固定思维,如果一直认定是自己的程序问题,在那反复优化,这是没有结果的。要大胆的去怀疑各个方面的问题,像这次测试工具的问题。

二,     解决问题的办法很多,要多尝试一下,多试几个工具,这样对比着来,才能达到解决问题的结果。

三,     善于总结,问题解决后要善于总结,把问题产生的原因,解决办法记录下来,这样才能不断的进步!

Apache ab压力测试时出现大量的错误原因分析的更多相关文章

  1. apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

    apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))   今天用apache 自带的ab工具测试,当并发量达到1000多的时 ...

  2. apache ab压力测试报错apr_socket_recv

    apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104)) apache 自带的ab工具测试,当并发量达到1000多的时候报错如下 ...

  3. 使用apache的ab压力测试时失败请求原因

    只要出现 Failed requests 就会多出现一行要求失败的各原因的数据统计,分别有 Connect, Length,与 Exception 三种,分别代表的意义为:Connect      无 ...

  4. apache ab压力测试

    今天提到压力测试,想起以前看到的ab,于是又重新查找了下资料,并记录了下. ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问. 它的测试目标是基于URL的,因此,既可以用来 ...

  5. apache ab 压力测试工具

    Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力.Apache附带的ab工具(使用的PHP环境是WAMP集成环境, ...

  6. apache ab 压力测试

    我今天在慕课网中无意之间看到压力测试,可以模拟高并发; 顺便看了一下有没有相关的博客,发现下面的这个很详细; //在apache 安装目录下的bin,运行命令 ab -n1000 -c10 http: ...

  7. MAC 安装 apache ab 压力测试工具以及遇到的坑

    ab 是apache对 http服务器进行压力测试的工具,它可以测试出服务器每秒可以处理多少请求.本文记录mac版本安装 ab 的步骤以及遇到的坑. 下载 进入 apache ab官网 下载页面. 安 ...

  8. 启动Hadoop HDFS时的“Incompatible clusterIDs”错误原因分析

    "Incompatible clusterIDs"的错误原因是在执行"hdfs namenode -format"之前,没有清空DataNode节点的data目 ...

  9. [转载] apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

    遇见相同的问题. https://www.cnblogs.com/felixzh/p/8295471.html -------------------------------------------- ...

随机推荐

  1. linux 添加静态ip dns

    /etc/network 下:interfaces auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.16 ...

  2. WPF中的image控件的Source赋值

    WPF中的Image控件Source的设置 1.XAML中 简单的方式(Source="haha.png"); image控件的Source设置为相对路径后(Source=&quo ...

  3. TextView 获取行数,某一行的内容,某行的宽度

    获取行数 ViewTreeObserver vto = textView.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlob ...

  4. WPF DataGrid常用属性记录

    WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...

  5. js 毫秒转日期(yy-MM-dd hh:mm:ss)

    var seconds = "133343241342";//毫秒数 var objtime = new Date();//声明一个日期内建函数 objtime.setTime(s ...

  6. 从零开始系列--R语言基础学习笔记之一 环境搭建

    R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...

  7. Codeforces 732e [贪心][stl乱搞]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...

  8. LeetCode 374. Guess Number Higher or Lower

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  9. java中static 和 final 的一些使用规则

    一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...

  10. BASH 漏洞修复

    Red Hat在Bash Shell中发现了一个名为Bash Bug的安全漏洞,当用户正常访问时,该漏洞允许攻击者的代码像在Shell中一样执行,这样就为各种各样的攻击打开了方便之门.据悉,其严重性要 ...