web压力测试工具ab | 天使羊波波闪耀光芒 零之轨迹 天使羊波波

26十/120

web压力测试工具ab

ab是apache自带的一款压力测试工具,安装完apache后就有了,一般在/usr/bin目录下。系统为CentOS。

1、安装apache

yum install httpd

2、ab使用方法形如

ab -c 20 -n 1000 http://www.example.com/

-c:并发数

-n:总请求数

===我蛋疼的看了源代码,这段可以跳过===ab是如何分配并发和请求数的呢?在test函数中,先给连接数和请求数分配内存,组http报文头、组http请求报文默认使用GET方法(最大2048个字节)进入for循环for (i = 0; i < concurrency; i++) { con[i].socknum = i; start_connect(&con[i]); }start_connect函数里,concurrency有几个并发,就创建几个socket连接apr_socket_create设置TCP窗口大小apr_socket_connectstarted++ 打开的并发数加加进入write_request函数apr_socket_send 把request里的内容通过socket发过去最大2048个字节 发送数据是一个字节一个字节发的吗?一个并发创建完成及一次请求发送后,出上一个for循环进入一个do while循环这个do while循环里面又有一个for循环for (i = 0; i < n; i++) n为并发数进入read_connection函数apr_socket_recv进入close_connection函数统计一些成功失败数量 平均时间,到一定数量会显示"Completed XXXX requests"apr_socket_close然后connect again,再次调用start_connect函数创建socket连接,再write_request,循环n次然后return===================================

假设c为并发数,n为总请求数,done为已完成数。从这里可以看出ab的运作方式是创建c个并发,同时发送c个请求,然后关闭socket连接,如果done小于n,则继续创建c个并发,同时发送c个请求,然后关闭socket连接,一直循环,直到done等于n时退出。

3、ab运行完成后会有比较详细的结果

Server Software: web服务器软件及版本Server Hostname: 请求的地址Server Port: 请求的端口Document Path: 请求的页面路径Document Length: 页面大小Concurrency Level: 并发数Time taken for tests: 测试总共花费的时间Complete requests: 完成的请求数Failed requests: 失败的请求数Write errors: 写入错误Total transferred: 总共传输字节数,包含http的头信息等HTML transferred: html字节数,实际的页面传递字节数Requests per second: 每秒处理的请求数,服务器的吞吐量(重要)Time per request: 平均数,用户平均请求等待时间Time per request: 服务器平均处理时间Transfer rate: 平均传输速率(每秒收到的速率)

4、其它注意事项

1)

ab并发数不能大于请求数,会提示

ab: Cannot use concurrency level greater than total number of requests

2)

请求数默认不能超过1024个,会提示

socket: Too many open files (24)

可用ulimit -n命令修改,例如:ulimit -n 8192 (设置用户可以同时打开的最大文件数)。

3)

并发数默认不能大于20000个,会提示

ab: Invalid Concurrency [Range 0..20000]

需要修改apache源代码support目录下ab.c文件,找到:

#define MAX_CONCURRENCY 20000

将宏定义的值改大,重新编译安装apache。

4)

提示

apr_socket_recv: Connection reset by peer (104)

网上说是apr-util有些问题,不太稳定,多试几次就好了。

5)

还有单独的apache bench源码包,及如何单独安装ab教程

下载:http://apachebench-standalone.googlecode.com/files/ab-standalone-0.1.tar.bz2

安装教程:https://code.google.com/p/apachebench-standalone/wiki/HowToBuild

6)测试时发现有如下错误

...Failed requests: 998 (Connect: 0, Receive: 0, Length: 998, Exceptions: 0)...

是因为在测试动态页面时,返回的长度和第一次不同,所以ab就判断失败了,对于动态页面这是合理的。可参考:http://mib168.iteye.com/blog/1299990

参考资料:

http://www.cnblogs.com/yjf512/archive/2011/05/24/2055723.html

http://www.kwx.gd/CentOSApp/CentOS-Apache-Bench.html

http://blog.csdn.net/largetalk/article/details/7337102

http://apr.apache.org/docs/apr/0.9/group__apr__network__io.html
web压力测试工具ab | 天使羊波波闪耀光芒 零之轨迹 天使羊波波

http://httpd.apache.org/docs/2.2/programs/ab.html

分类: LINUX发表评论

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/131527.html

更多阅读

部分白盒测试工具介绍 安卓白盒测试工具

一、JTEST1、简介:jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最

5款浏览器兼容性测试工具 网站浏览器兼容性测试

5款浏览器兼容性测试工具Browsershots一个在线测试工具,支持很多浏览器,比如一些版本老掉牙的浏览器,和一些你可能从未听说过的浏览器。测试结果基本靠谱,但是等待时间稍长,一般都需要几分钟。

自动化单元测试工具Junit Factory使用介绍 junit自动化测试

最近在PassPort项目中,很多开发人员都采用了Junit作为单元测试工具,保证代码质量,所以我最近研究了agitar公司的一种免费的junit自动生成的工具-junit factory,agitar公司有一套更优秀的商业软件---自动化单元测试工具agitarone。Junit

声明:《web压力测试工具ab | 天使羊波波闪耀光芒 零之轨迹 天使羊波波》为网友始兂終分享!如侵犯到您的合法权益请联系我们删除