Apache 压力测试工具 ab test

ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。

$ /usr/local/apache2/bin/ab --help  #查看下ab帮助文档相关参数

#-n:请求次数
#-c:同一时间发出多少个请求(并行连接)
$ /usr/local/apache2/bin/ab -n 10 -c 10 http://www.google.com/ # 表示同时处理10个请求并运行10次http://www.google.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.google.com (be patient).....done

Server Software:        gws
Server Hostname:        www.google.com
Server Port:            80

Document Path:          /
Document Length:        376 bytes

Concurrency Level:      10
Time taken for tests:   0.256 seconds  # 整个测试持续的时间
Complete requests:      10  # 完成的请求总数量
Failed requests:        0  # 失败的请求总数量
Write errors:           0
Non-2xx responses:      10
Total transferred:      9240 bytes  # 整个测试过程的网络传输量
HTML transferred:       3760 bytes  # 整个测试过程的HTML内容传输量
Requests per second:    39.12 [#/sec] (mean)  # 每秒请求数 ( 平均 )
Time per request:       255.616 [ms] (mean)  # 每次并发请求时间 ( 所有并发 )
Time per request:       25.562 [ms] (mean, across all concurrent requests) # 每一请求时间 ( 并发平均 )
Transfer rate:          35.30 [Kbytes/sec] received  # 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

 # 网络上消耗的时间的分解
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       30   32   1.2     31      33
Processing:    32   33   0.8     33      35
Waiting:       32   33   0.8     33      35
Total:         63   64   0.9     64      65

# 下面的内容为整个场景中所有请求的响应情况。
# 在场景中每个请求都有一个响应时间,其中 50% 的用户响应时间小于 64 毫秒,
# 66 % 的用户响应时间小于 65 毫秒,最大的响应时间小于 65 毫秒
Percentage of the requests served within a certain time (ms)
  50%     64
  66%     65
  75%     65
  80%     65
  90%     65
  95%     65
  98%     65
  99%     65
 100%     65 (longest request)

遇到问题:
1.$ /usr/local/apache2/bin/ab -n2000 -c2000 http://www.google.com/
socket too many open files

$ ulimit -n  #查询当前终端的文件句柄数:一般的系统默认的1024
$ ulimit -n 65535  #修改文件句柄数为65535
$ echo ulimit -n 65535 >>/etc/profile  #为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit加入到/etc/profile文件底部
$ source /etc/profile  #加载修改后的profile
$ ulimit -n  #显示65535,修改完毕!

2.$ /usr/local/apache2/bin/ab -n2000 -c2000 http://www.google.com/
apr_socket_recv: Connection reset by peer (104)

$ cd /home/super/httpd-2.4.2/support/
$ vim ab.c
return;
} else {
# 注释原来报错代码
//apr_err("apr_socket_recv", status);
# 新增内容
bad++;
close_connection(c);
return;
}
# 最后重新编译apache

发表评论