apache ab测试的Failed request说明(length)

我最近在用 ab ( ApacheBench ) 测试一个网站时发现结果报告中一直会出现 Failed requests,而且出现的次数非常高,我原本以为是压力测试的结果有大部分是失败的,但看观看其他数据却一点也不觉得有失败,经过一番研究后才真正理解为何会出现 Failed request 数据。

如下压力测试的结果:

 

 
  1. Server Software: Microsoft-IIS/7.5

  2. Server Hostname: example.com

  3. Server Port: 80

  4.  
  5. Document Path: /

  6. Document Length: 35137 bytes

  7.  
  8. Concurrency Level: 1

  9. Time taken for tests: 4.619462 seconds

  10. Complete requests: 100

  11. Failed requests: 99

  12. (Connect: 0, Length: 99, Exceptions: 0)

  13. Write errors: 0

  14. Keep-Alive requests: 100

  15. Total transferred: 3543782 bytes

  16. HTML transferred: 3507782 bytes

  17. Requests per second: 21.65 [#/sec] (mean)

  18. Time per request: 46.195 [ms] (mean)

  19. Time per request: 46.195 [ms] (mean, across all concurrent requests)

  20. Transfer rate: 749.00 [Kbytes/sec] received

先分析上述数据,我取得的第一份 HTML 文件得到的大小 ( Document Length ) 为  35,137 bytes,我总共发出要求共 100 次 ( Complete requests ),总 HTML 数据传输量 ( HTML transferred ) 为 3,507,782 bytes 感觉非常合理,实际的传输量大约是单一文件的 100 倍,所以我研判这 100 个 Request 的确有正确送出,但为何 Failed requests 会出现有 99  次的错误呢?

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

    Connect      无法送出要求、目标主机连接失败、要求的过程中连线被中断
    Length        回应的内容长度不一致 ( 以 Content-Length 标头值为判断依据 )
    Exception   发生无法预期的错误

而从上述说明就可以很明显看出所有的 Failed requests 都落在 Length 这个类别上,原来这是因为受测网站的首页是动态的内容,当第一次发出 HTTP request 与后续发出的 HTTP request 所得到回应的 HTML 长度都是不同大小的 ( 每次回应的 Content-Length 大小不一致 ),才会引发 Failed requests 的 Length 问题的失败,因此这类 Length 不一致的失败在进行「动态网页」压力测试时是合理的,可以不予理会。

这裡的 Length 是以 "第 1 次" 取得的 Content-Length 为主,如果第 2 次以后的 HTTP Request 所得到的 HTTP Response Header 得到的 Content-Length 与第 1 次取得的长度不一致,就会得到 Length 的错误。

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值