服务器压力测试软件AB,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_connect

started++ 打开的并发数加加

进入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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值