1. 概述
项目上线前,需要先知道web服务的性能指标,也就是服务器的并发处理能力。 服务器的吞吐率, 即qps, query per seconds. 需要通过压力测试来知道性能。 常用压测的工具 ab, ApacheBench
2. ab安装
ab为Apache附带压测工具。 安装Apache后在 apache/bin 目录下 安装:http://blog.csdn.net/yonggang7/article/details/22607721
3. ab使用
先检查ab工具是否正常,查看其版本号
cd apache/bin输出值
./ab -V
This is ApacheBench, Version 2.3 <$Revision: 1554214 $>开始压测
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
./ab -n1000 -c10 http://localhost:8999/index.html可以看到下面的结果
Server Software: Apache/2.4.9
Server Hostname: localhost
Server Port: 8999
Document Path: /index.html
Document Length: 45 bytes
Concurrency Level: 10
Time taken for tests: 0.223 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 299000 bytes
HTML transferred: 45000 bytes
Requests per second: 4477.76 [#/sec] (mean)
Time per request: 2.233 [ms] (mean)
Time per request: 0.223 [ms] (mean, across all concurrent requests)
Transfer rate: 1307.47 [Kbytes/sec] received
4. ab常用参数
-h 显示帮助信息 -V 查看版本号 -c 并发用户数 -n 总请求数 -C 请求cookie,用法 "cookie_name=value", 可重复 -d 不显示"percentage served within XX [ms] table". -H 增加额外的请求头, -i 用HEAD请求代替GET -k 启用Http keepalive功能, -v 显示详细信息 "-v4" 4或更大值会显示头信息,"-v3" 3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。 -w 以html格式输出结果 -t 超时时间,所有请求的最大执行时间,默认没有限制。
5. ab测试结果字段意思
Server Software: 服务器名称
Server Hostname: url主机名称
Server Port: 端口
Document Path: url中绝对路径
Document Length: Http相应数据的正文长度
Concurrency Level: 并发用户数,我们用-c设置的参数
Time taken for tests: 所有请求处理完花费的时间 秒 seconds
Complete requests: 总请求数,我们用-n设置的参数
Failed requests: 表示失败的请求数,
指请求在连接服务器,发送数据,接收数据等环节发生的异常,以及无响应后超时,超时时间可以用-t 来设置
另外,如果响应头的http状态码为2XX以外的值,这些不算在失败的请求
Total transferred: 表示http响应头和正文的总和 bytes
HTML transferred: 相应正文的总和 bytes
Requests per second: 这是最重要的数据,表示每秒处理请求数 requests per seconds 4634.07 [#/sec] (mean)
Time per request: 用户平均等待时间2.158 [ms] (mean)
Time per request: 服务器平均处理时间 0.216 [ms] (mean, across all concurrent requests)
Transfer rate: 每秒从服务器获取的数据长度 1353.11 [Kbytes/sec] received
Percentage of the requests served within a certain time (ms) 每个请求处理时间的分布
6. 拐点测试
性能测试的结果一般为性能拐点值。当并发数越来越大时,服务器的qps反而会下降,处理时间会上升。 压力测试时将并发数由小到大进行测试,然后制作吞吐率随并发用户数变化的曲线图,服务器处理时间的曲线图。 在最高点为服务器性能的最大吞吐率。