专栏首页仙士可博客压力测试工具:apache bench(ab)

压力测试工具:apache bench(ab)

作为php后端工程师,除了实现业务需求之外,需要考虑的就是自己写的服务,在大并发下是否能正常运行了,例如在我之前文章讲到的,在并发下,数据库查询可能会造成脏读幻读等情况,导致业务不正常.

但是,在一般开发情况下,没那么多大并发情况让你测试,那该怎么办呢?

这时候,我们就可以用到apache的压力测试工具了,apache bench简称ab

安装

linux

 yum -y install httpd-tools  //centos
 apt-get install apache2-utils //ubuntu
 ab -V #查看版本

windows

windows只需要安装apache,就自带ab工具

简单使用

通过命令:

 ab -c1000 -n100000 http://127.0.0.1/

可向目标地址发送 100000次请求,并发数为1000

[root@localhost ~]# ab -c100 -n10000 http://127.0.0.1:9501/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests  //已经完成的请求数
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        EasySwoole   #服务器名
Server Hostname:        127.0.0.1  #请求的URL主机名
Server Port:            9501 #端口号

Document Path:          / #请求路径
Document Length:        44 bytes #响应数据长度

Concurrency Level:      100  #并发数,我们自己设置的-c参数
Time taken for tests:   0.629 seconds  #请求完成时间
Complete requests:      10000 #完成请求数
Failed requests:        0 #错误请求数
Write errors:           0 #写入错误次数
Total transferred:      2050000 bytes #请求长度总和
HTML transferred:       440000 bytes #html响应总长度(去除了响应头的长度)
Requests per second:    15909.13 [#/sec] (mean) #每秒处理的请求数
Time per request:       6.286 [ms] (mean) #用户平均请求等待时间
Time per request:       0.063 [ms] (mean, across all concurrent requests) #服务器平均处理时间
Transfer rate:          3184.93 [Kbytes/sec] received  #带宽传输速度

Connection Times (ms)  #连接处理时间
              min  mean[+/-sd] median   max
Connect:        0    1   1.3      1      51
Processing:     0    5   5.6      4      56
Waiting:        0    4   5.5      3      55
Total:          0    6   5.8      5      57

Percentage of the requests served within a certain time (ms) 
  50%      5  #50%的请求在5ms内返回
  66%      6
  75%      6
  80%      7
  90%      8
  95%     10
  98%     24
  99%     36  #99%的请求在36ms内返回
 100%     57 (longest request)
[root@localhost ~]#

通过ab命令测试,将会输出以上的数据,通过上面的数据可分析出服务器响应情况,并发处理能力,尤其是Requests per second 参数,它确定了服务器的秒并发能力

ab常用参数配置

命令格式

ab [-命令命令参数] 请求地址

最后的请求地址不能直接为单域名(http://www.php20.cn) 必须再增加一个/ http://www.php20.cn/   

-n  //本次测试发起的总请求数

-n10000 代表本次测试发起10000个请求

-c 请求并发数

-c1000 代表每次都同时发起1000次请求,也就是并发数为1000

-t 本次测试的最大秒速,默认没有限制

-t2 代表2秒后就结束测试

-s 每次请求的超时时间,默认为30

-s30 代表每个请求如果超时30秒,则直接代表该请求超时

-p 包含需要post的文件地址,和-T一起使用

例如:

新增文件post.txt:

name=tioncico&password=123456

请求:

ab -c100 -n10000 -p post.txt -T "application/x-www-form-urlencoded"  http://127.0.0.1:9501/

-T 设置content-type 上面有讲到

-v  显示请求的显示详细程度,默认是只显示上面已完成请求数等

默认值为1,只显示请求的总统计

2 显示响应头,响应数据,并包含1的显示

3 显示响应状态码,并包含2的显示   

4 (本人没发现和3有啥区别,听说会显示更多信息)

-C 添加cookie

-C "cookie1=cookie1,cookie2=cookie2" 

-w 以html表格的元素显示ab的测试结果:

其他

通过上面的一些参数配置,我们可以通过设置cookie,去模拟用户登录情况,用于测试用户登录后的并发压力测试

也可以通过-p配置,去上传post数据,用于测试表单提交等压力测试

总的来说,ab压力测试工具只能简单测试一些请求接口,但是并不能实现复杂的测试条件判断,例如post数据异常,ab测试工具是不能够判断数据是否异常的

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HTTP中GET/POST请求的区别

    HTTP 请求方法有:HEAD、PUT、DELETE、OPTIONS、CONNECT

    仙士可
  • jQuery判断当前元素是第几个元素&获取第N个元素

    如果我们点击任何一个li标签,想知道当前点击的是第几个li标签,可以使用下面的代码:

    仙士可
  • 关于接口幂等性

    HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响...

    仙士可
  • Python爬虫的起点

    第一章主要讲解爬虫相关的知识如:http、网页、爬虫法律等,让大家对爬虫有了一个比较完善的了解和一些题外的知识点。

    sergiojune
  • 程序员都该懂点 HTTP

    HTTP 全称是 HyperText Transfer Protocal ,即:超文本传输协议,从 1990 年开始就在 WWW 上广泛应用,是现今在 WWW ...

    developerHaoz
  • 爬虫篇|不会抓包,谈何爬虫(七)

    所谓的http代理,其实就是代理客户机的http访问,主要代理浏览器访问页面。 代理服务器是介于浏览器和web服务器之间的一台服务器,有了它之后,浏览器不是直...

    润森
  • 性能测试工具ApacheBench

    ApacheBench是一个用来衡量http服务器性能的单线程命令行工具。原本针对Apache http服务器,但是也适用于其他http服务器。

    陌涛
  • 如何复用原有设计中Block的位置

    这里的Block是指Block RAM和DSP48。在有些设计中,这两者有其一或者两者均出现利用率比较高的情形,而且在某一版本中可以达到时序收敛。如果后续版本并...

    Lauren的FPGA
  • LFS与BLFS 7.6版本发布,从头构建自己的Linux系统

    Linux From Scratch(LFS),是由Gerard Beekmans编写的一本指南,指导大家如何从源代码编译Linux系统。 BLFS,Beyo...

    小小科
  • 中国制造2025的本地化实践:没有最好只有最适合

    导读:对于一直以来“大而不强”的中国制造业来说,光有变革的决心远远不够,仅仅依靠政策的利好也只能是“空中楼阁”,如何满足“以客户需求为核心”,实现产品智能化、个...

    钱塘数据

扫码关注云+社区

领取腾讯云代金券