设为首页 收藏本站
查看: 1070|回复: 0

[经验分享] Apache压力测试方法之ab命令

[复制链接]

尚未签到

发表于 2018-11-17 12:25:23 | 显示全部楼层 |阅读模式
  Apache压力测试方法之ab命令
1、性能测试工具ab简介
  ab(Apache Bench)命令是apache免费自带的性能测试工具,默认在apache的bin目录下,它能模拟多个并发请求,主要是用来测试apache、Nginx等网站服务器单位时间内能处理请求的个数。
  ab命令会创建多个并发访问线程,模拟多个访问者同时对某一个URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
  ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,其原理类似CC***。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。
  在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足)
2、安装ab命令
  默认情况下,只要安装了Apache,ab命令就会自动安装上,当然有时候我们只想单独安装ab命令,那么就需要使用下面的方法。
  
  方法1:直接使用yum安装apache的工具包httpd-tools安装ab命令
  [root@localhost ~]# yum -y install httpd-tools
  [root@localhost ~]# ab -V   检查ab命令是否安装成功
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  方法2:yum安装或编译安装Apache即可安装ab命令(这里不进行演示)
  源码安装apache的话。apache安装完毕后ab命令存放在apache安装目录的bin目录下,例如:/usr/local/apache2/bin
  如果apache 是通过yum的RPM包方式安装的话,ab命令默认存放在/usr/bin目录下。
3、ab命令重要常用参数说明
  -c 数值
  单次发送的请求数量,也称并发量
  -n 数值
  总共的请求次数
  -t 数值(秒)
  设置请求的时间长短,单位默认秒,其内部隐含值是-n 50000
  -v
  设置详细模式等级
  -V
  显示版本号并退出
  -h
  显示帮助信息
  -H
  为请求追加一个额外的头
  -A
  指定连接服务器的基本的认证凭据
  -C
  添加cookie
  -g
  将测试结果输出为“gnuolot”文件
  -i
  使用“head”请求方式
  -k
  激活HTTP中的“keepAlive”特性
  -p
  指定包含数据的文件
  -q
  不显示进度百分比
  -T
  使用POST数据时,设置内容类型头
  -w
  以HTML表格方式打印结果
  -x
  以表格方式输出时,设置表格的属性
  -X
  使用指定的代理服务器发送请求
  -y
  以表格方式输出时,设置表格属性
4、使用ab命令进行压力测试   
  [root@localhost ~]# ab -c 30 -n 100 http://192.168.115.120/
  #说明:指定的并发量为30每秒,总共请求100次
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  Benchmarking 192.168.115.120 (be patient).....done
  Server Software:        Apache/2.4.7   被测试的Web服务器软件名称
  Server Hostname:        192.168.115.120  请求的URL主机名
  Server Port:            80        请求端口号
  Document Path:          /      请求的URL文件路径
  Document Length:        152 bytes  页面字节数
  Concurrency Level:      30      并发用户数
  Time taken for tests:   0.085 seconds 总访问时间
  Complete requests:      100      完成的请求数
  Failed requests:        0       失败请求数
  Write errors:           0
  Total transferred:      39600 bytes  请求总数据大小(包括header头信息)
  HTML transferred:       15200 bytes   html页面实际总字节数
  Requests per second:    1170.93 [#/sec] (mean)    吞吐量-每秒请求数
  Time per request:       25.621 [ms] (mean)     用户平均请求等待时间
  Time per request:       0.854 [ms] (mean, across all concurrent requests)    并发的每个请求平均消耗时间
  Transfer rate:          452.82 [Kbytes/sec] received  每秒获取的数据长度
  Connection Times (ms)
  min  mean[+/-sd] median   max
  Connect:        0    3   3.8      1      10
  Processing:     8   18   5.5     16      30
  Waiting:        0   17   5.7     16      29
  Total:         12   21   7.3     18      37
  Percentage of the requests served within a certain time (ms)
  50%     18     50%用户请求在18ms内返回
  66%     23     66%用户请求在23ms内返回
  75%     27    75%用户请求在27ms内返回
  80%     29     80%用户请求在29ms内返回
  90%     33    90%用户请求在33ms内返回
  95%     35     95%用户请求在35ms内返回
  98%     36    98%用户请求在36ms内返回
  99%     37     99%用户请求在37ms内返回
  100%     37 (longest request)
  由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数
5、关于需要用户名密码登录的问题
  有时候进行压力测试需要用户登录,可以先用账户和密码登录后,用开发者工具找到标识这个会话的Cookie值(Session>
  
  如果只用到一个Cookie,那么只需键入命令:
  ab -n 100 -C key=value http://test.com/
  
  如果需要多个Cookie,就直接设Header:
  ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/
  总的来说ab工具ab小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。因此ab工具可以用作临时紧急任务和简单测试。同类型的压力测试工具还有:webbench、siege、http_load等
  
6、ab命令使用的一些问题
  ab命令在一般系统上面做测试时候,一般并发不能超过1024个,其实是因为系统限制每个进程打开的最大文件数为1024,可以用ulimit -a来查看
  
  -n 可以指定最大请求数,但是不能超过50000个
  
  -v n 当n>=2 时,可以显示发送的http请求头,和响应的http头及内容,压力测试时不要这么做。在做压力测试的时候,一般情况下压力测试客户端接收到的数据量一定会远大于发送出去的数据量
7、ab命令的性能指标
(1)吞吐率(Requests per second)
  概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。计算公式:总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time taken for tests
  
(2)并发连接数(The number of concurrent connections)
  概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
  
(3)并发用户数(The number of concurrent users,Concurrency Level)
  概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
  
(4)用户平均请求等待时间(Time per request)
  计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
  Time per request = Time taken for tests /( Complete requests / Concurrency Level)
  
(5)服务器平均请求等待时间(Time per request: across all concurrent requests)
  计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
  Time taken for / testsComplete requests
  可以看到,它是吞吐率的倒数。同时,它也=用户平均请求等待时间/并发用户数,即Time per request / Concurrency Level


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636216-1-1.html 上篇帖子: Apache部署HTTP服务 下篇帖子: 将apache添加为开机启动有两个方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表