1. 什么是ab
ab(Apache HTTP server benchmarking tool)是Apache的HTTP服务器基准测试工具。ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。ab的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
2. 基本使用
不管是linux还是windows使用方法都差不多,简单粗暴,如下两条:
- 首先进入Apache的bin目录,然后命令行操作
- 命令行执行;例如:
ab -n 100 -c 100 http://127.0.0.1/
常用参数:“-n” 数值:总请求数。“-c” 数值:并发用户数。
注:url必须在后方加上“/”,或指定相应文件,否则报错。更多参数查看ab工具文档: http://httpd.apache.org/docs/
3. 测试报告
执行完命令后,如果测试完成,会有一些这样的信息:
大概的什么意思已经标明,在实际测试中会经常关注的指标有三个:
Requests per second
平均每秒请求数,即吞吐率;指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。计算公式:总请求数 / 处理完成这些请求数所花费的时间,即:
Request per second = Complete requests / Time taken for testsTime per request
每次并发请求平均耗时,即用户平均请求等待时间。计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即:
Time per request = Time taken for tests /( Complete requests / Concurrency Level)Time per request(across all concurrent requests)
平均每个请求的耗时,即服务器平均请求等待时间。计算公式:处理完成所有请求数所花费的时间 / 总请求数,即:
Time per request(across all concurrent requests)= Time taken for tests / Complete requests
可以看到,它是吞吐率的倒数;同时,它也=用户平均请求等待时间/并发用户数,即:Time per request / Concurrency Level
4. 常见问题
4.1 登录问题
进行压力测试时URL需要登录时请求无法成功,怎么办?可以:
- 先用账户和密码登录
- 用开发者工具找到标识这个会话的Cookie值(Session ID)记下来
- 执行命令:
一个Cookie情况时:ab -n 100 -C key=value http://test.com/
多个Cookie情况时,设置Header:ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/
4.2 报错:“apr_pollset_poll:The timeout specified has expired (70007)”
原因是响应超负荷了,从两个点解决:
- 一个是查看请求的url是否正常,还有是看看是否服务器已经扛不住这个测试;
- 加-k参数可以直接杀死卡住的进程以不报错
0 条评论
来做第一个留言的人吧!