您现在的位置是:首页 > 程序 > server网站首页server
Linux下ab压力测试
一.ab的简介
ab是apachebench命令的缩写,ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
二.ab的原理
ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
三.ab的安装
yum -y install httpd-tools
测试安装是否成功:
[root@yzmcms /]# ab -V 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/
四.性能指标
吞吐量(Requests per second):
服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
记住:吞吐率是基于并发用户数的。这句话代表了两个含义:
a、吞吐率和并发用户数相关
b、不同的并发用户数下,吞吐率一般是不同的
计算公式:总请求数/处理完成这些请求数所花费的时间,即
Request per second=Complete requests/Time taken for tests
必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。
并发连接数(The number of concurrent connections):
并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
并发用户数(Concurrency Level):
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的,我们的并发用户数就得除以这个基数。
用户平均请求等待时间(Time per request):
计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)
服务器平均请求等待时间(Time per request:across all concurrent requests):
计算公式:处理完成所有请求数所花费的时间/总请求数,即:
Time taken for/testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也等于用户平均请求等待时间/并发用户数,即
Time per request/Concurrency Level
五.ab测试实例:
模拟GET请求:
ab -c 10 -n 100 https://www.yzmask.com/index/test
-c 10表示并发用户数为 10
-n 100表示请求总数为 100
模拟POST请求:
ab -c 10 -n 100 -p '/tmp/post.txt' -T 'application/x-www-form-urlencoded' 'https://www.yzmask.com/index/test/post'
-p 模拟post请求,文件格式为 name=yzmcms&status=1 ,配合-T使用
-T post数据所使用的Content-Type头信息,例如-T 'application/x-www-form-urlencoded'
POST请求时需把post的数据写入到文件内,然后 -p '文件地址'即可
返回结果说明:
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 www.yzmask.com (be patient).....done Server Software: nginx #测试服务器的名字 Server Hostname: www.yzmask.com #请求的URL主机名 Server Port: 80 #web服务器监听的端口 Document Path: /index/test/post #请求的URL中的根绝对路径 Document Length: 1 bytes #HTTP响应数据的正文长度 Concurrency Level: 10 # 并发用户数,这是我们设置的参数之一 Time taken for tests: 0.432 seconds #所有这些请求被处理完成所花费的总时间 单位秒 Complete requests: 100 # 总请求数量,这是我们设置的参数之一 Failed requests: 0 # 表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况 Write errors: 0 Total transferred: 18000 bytes #所有请求的响应数据长度总和。包括每个HTTP响应数据的头信息和正文数据的长度 Total body sent: 20400 HTML transferred: 200 bytes # 所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度 Requests per second: 231.44 [#/sec] (mean) #吞吐率,计算公式:Complete requests/Time taken for tests 总请求数/处理完成这些请求数所花费的时间 Time per request: 43.207 [ms] (mean) # 用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数) Time per request: 4.321 [ms] (mean, across all concurrent requests) #服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level Transfer rate: 40.68 [Kbytes/sec] received 46.11 kb/s sent 86.79 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 8 12 2.5 12 16 Processing: 14 28 7.4 28 44 Waiting: 14 28 7.4 28 44 Total: 23 40 8.3 40 58 Percentage of the requests served within a certain time (ms) 50% 40 66% 44 75% 45 80% 47 90% 50 95% 55 98% 56 99% 58 100% 58 (longest request)
总结:ab确实是一款比较好用的压力测试工具,经过反复测试,YzmCMS系统果然不负所望,在高并发请求时页面打开速度毫无影响,相对于其他开源产品明显表现的更加高效!
关于YzmCMS测评还有另外一篇文章,大家如果有兴趣可以查看:YzmCMS百万数据负载测评!
下一篇:PHP操作Redis常见方法整理
相关文章
文章评论 (0)
- 这篇文章还没有收到评论,赶紧来抢沙发吧~