`

ApacheBench测试详解

阅读更多

 

APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录。
格式: ./ab [options] [http://]hostname[:port]/path
参数:
-n requests Number of requests to perform
//在测试会话中所执行的请求个数(本次测试总共要访问页面的次数)。默认时,仅执行一个请求
-c concurrency Number of multiple requests to make
//一次产生的请求个数(并发数)。默认是一次一个。
-t timelimit Seconds to max. wait for responses
//测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p postfile File containing data to POST
//包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt 。 (配合-T)
-T content-type Content-type header for POSTing
//POST数据所使用的Content-type头信息,如 -T "application/x-www-form-urlencoded" 。 (配合-p)
-v verbosity How much troubleshooting info to print
//设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
-w Print out results in HTML tables
//以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i Use HEAD instead of GET
// 执行HEAD请求,而不是GET。
-x attributes String to insert as table attributes
-y attributes String to insert as tr attributes
-z attributes String to insert as td or th attributes

-C attribute Add cookie, eg.  -C "c1=1234,c2=2,c3=3"  (repeatable)

//-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复,用逗号分割。

//提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如

-C " c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8"
-H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable)
-A attribute Add Basic WWW Authentication, the attributes
are a colon separated username and password.
-P attribute Add Basic Proxy Authentication, the attributes
are a colon separated username and password.
//-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-X proxy:port Proxyserver and port number to use
-V Print version number and exit
-k Use HTTP KeepAlive feature
-d Do not show percentiles served table.
-S Do not show confidence estimators and warnings.
-g filename Output collected data to gnuplot format file.
-e filename Output CSV file with percentages served
-h Display usage information (this message)
//-attributes 设置 属性的字符串. 缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现 HTTP/1.x; 仅接受某些'预想'的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。

参数很多,一般我们用 -c 和 -n 参数就可以了 . 例如:

./ab -c 1000 -n 1000 http://127.0.0.1/index.php

这个表示同时处理1000个请求并运行1000次index.php文件.
#/usr/local/xiaobai/apache2054/bin/ab -c 1000 -n 1000 http://127.0.0.1/index.html.zh-cn.gb2312
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software: Apache/2.0.54
//平台apache 版本2.0.54
Server Hostname: 127.0.0.1
//服务器主机名
Server Port: 80
//服务器端口

Document Path: /index.html.zh-cn.gb2312
//测试的页面文档
Document Length: 1018 bytes
//文档大小

Concurrency Level: 1000
//并发数
Time taken for tests: 8.188731 seconds
//整个测试持续的时间
Complete requests: 1000
//完成的请求数量
Failed requests: 0
//失败的请求数量
Write errors: 0

Total transferred: 1361581 bytes
//整个场景中的网络传输量
HTML transferred: 1055666 bytes
//整个场景中的HTML内容传输量
Requests per second: 122.12 [#/sec] (mean)
//大家最关心的指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8188.731 [ms] (mean)
//大家最关心的指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8.189 [ms] (mean, across all concurrent requests)
//每个请求实际运行时间的平均值
Transfer rate: 162.30 [Kbytes/sec] received
//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 646 1078.7 89 3291
Processing: 165 992 493.1 938 4712
Waiting: 118 934 480.6 882 4554
Total: 813 1638 1338.9 1093 7785
//网络上消耗的时间的分解,各项数据的具体算法还不是很清楚

Percentage of the requests served within a certain time (ms)
50% 1093//有50%的请求都是在1093ms内完成的
66% 1247//有66%的请求都是在1247ms内完成的
75% 1373
80% 1493
90% 4061
95% 4398
98% 5608
99% 7368
100% 7785 (longest request)
//整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于1093 毫秒,60% 的用户响应时间小于1247 毫秒,最大的响应时间小于7785 毫秒

由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数

 

比较复杂的一个用例:

ab.exe

-n 1//总测试次数

-c 1//并发数

-T "application/x-www-form-urlencoded"//post方式提交

-p post.txt //post时提交的参数文件,格式如“p1=1&p2=2&p3=p3”

-C "cook1=001,c2=2,JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8"//传递的cookies值,其中JSESSIONID参数是比较特殊的,它是实现绑定session 。

-w //按照html格式输出

"http://192.168.0.87:8080/EPv2/ab/ab.jsp" //要测试的url

=====================================================

 

ab 帮助:


用ab测试时,最大并发不能超过1024,其实ab本身没有做这个限制,而是系统限制每个进程打开的最大的文件数为1024,ulimit查看如 下:

[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 32765
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

而且open files这个选项在一般的系统里是不允许修改成无限制的,如下:
[root@localhost ~]# ulimit -n unlimited
bash: ulimit: open files: cannot modify limit: Operation not permitted

但是稍微修改大一些或者是小一些,还是允许的,我们修改的小一 些试试:
[root@localhost ~]# ulimit -n 1020
[root@localhost ~]# ulimit -n
1020
[root@localhost ~]#

在用ab测试,错误如下:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1019
ioctl(1019, FIONBIO, [1])               = 0
gettimeofday({1243919682, 867688}, NULL) = 0
connect(1019, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("10.55.38.18")}, 16) = -1 EINPROGRESS (Operation now in progress)
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = -1 EMFILE (Too many open files )
close(-1)                               = -1 EBADF (Bad file descriptor)
第1019个还能正常打开,下一个就报Too many open files的 错误了

确实有效,那么我们修改大一些吧:

[root@localhost ~]# ulimit -n 10240
[root@localhost ~]# ulimit -n
10240
[root@localhost ~]#

但是我们发现改大却不行,这里却冒出了一个AF_AX25 的名词:
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1024
ioctl(1024, FIONBIO, [1])               = 0
gettimeofday({1243919592, 254950}, NULL) = 0
connect(1024, {sa_family=AF_INET , sin_port=htons(80), sin_addr=inet_addr("10.55.38.18")}, 16) = -1 EINPROGRESS (Operation now in progress)
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1025
ioctl(1025, FIONBIO, [1])               = 0
gettimeofday({1243919592, 255242}, NULL) = 0
connect(1025, {sa_family=AF_AX25 , sa_data="\0P\n7&\22\0\0\0\0\0\0\0\0"}, 16) = -1 EAFNOSUPPORT (Address family not supported by protocol)

这个AF_AX25可能是buffer溢出造成的,但不确定 哦:)。

另:
-n 可以指定最大请求数,但是也不能超过50000哦:)
-v n   当n>=2 时,可以显示发送的http请求头,和响应的http头及内容; 压力测试时不要这么做哦:)

 



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hieric1001/archive/2009/12/18/5025709.aspx

 

 

  • ab.rar (30.6 KB)
  • 下载次数: 17
  • ab.jsp.rar (396 Bytes)
  • 描述: 一个测试用的jsp
  • 下载次数: 4
分享到:
评论

相关推荐

    Web性能压力测试工具之ApacheBench详解

     ApacheBench命令原理:  ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat...

    apache压力测试之ab

    "ab"(ApacheBench)是Apache HTTP服务器自带的一个简单压力测试工具,用于模拟多个并发用户对Web服务器进行请求,以此来测量服务器的处理能力和响应速度。 **ab工具详解** 1. **安装与使用** - 安装:在大多数...

    BOMS.zip_apache-ab 测试_scubom

    **Apache AB测试详解** Apache Bench, 简称ab,是Apache HTTP服务器自带的一个轻量级性能测试工具。它能够模拟多个并发用户对指定URL进行请求,从而评估服务器的性能和稳定性。在“BOMS.zip_apache-ab 测试_scubom...

    软件性能测试过程详解与案例剖析-高清

    2. **性能测试工具**:常见的性能测试工具有JMeter、LoadRunner、 Gatling、Apache Bench等,它们能帮助我们创建虚拟用户,模拟实际用户行为,并收集性能数据。 3. **性能指标**:主要包括响应时间(用户请求到系统...

    压力测试详解

    【压力测试详解】 压力测试是评估软件或系统在高负载条件下的稳定性和性能的重要方法。在IT领域,尤其是Web应用程序的开发和维护中,压力测试是确保服务质量和用户体验的关键环节。LoadRunner是一款广泛使用的压力...

    ab测试工具

    **ApacheBench(ab)测试工具详解** ApacheBench,简称ab,是Apache HTTP服务器项目提供的一个命令行工具,用于对Web服务器进行性能测试。它能够模拟多个并发用户请求,以此来评估服务器在高负载下的处理能力和响应...

    windows下web压力测试工具ab

    - 提供的`.mht`文件,如“Web性能压力测试工具之ApacheBench(ab)详解.mht”和“Siege使用教程.mht”,包含了详细的使用指南和实例,可以帮助用户深入理解这些工具的用法。 总的来说,Web压力测试是保障网站可靠...

    Apache自带的ab压力测试工具用法详解

    ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,可以在bin下面找到ab ... This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http:/

    第二十七章:apache应用详解及优化1

    【Apache应用详解及优化】 Apache HTTP Server是世界上最流行的Web服务器软件之一,它的高效性和灵活性使其成为许多网站的基础。本章将深入探讨Apache的优化策略,包括保持连接、网页传输压缩、页面缓存时间、隐藏...

    压力测试工具ab

    "ab"(ApacheBench)就是这样一个简单而强大的命令行工具,专门用于对Web服务器进行性能测试。 **一、ab工具介绍** Apache ab(Apache Benchmark)是Apache HTTP服务器项目的一部分,它能够模拟多个并发用户向...

    压力测试工具-ab

    在IT行业中,性能测试是评估系统稳定性和承载能力的重要环节,而`ab`(ApacheBench)就是一个广泛使用的轻量级压力测试工具。它由Apache HTTP服务器项目开发,主要用于测试Web服务器的性能。下面我们将深入探讨`ab`...

    压力测试工具ab.exe

    ApacheBench,简称ab,是一个命令行工具,用于测试Web服务器的性能。它可以模拟多个并发用户向服务器发送HTTP请求,并提供详细的性能报告,包括响应时间、吞吐量等关键指标。这使得开发者和运维人员能够了解服务器在...

    性能测试工具AB

    AB,全称为ApacheBench,是由Apache HTTP服务器项目开发的命令行工具。它的主要功能是模拟多个并发用户对HTTP服务器进行请求,通过测量响应时间、吞吐量等指标,来评估服务器的性能和负载能力。 ### 主要功能 1. *...

    Tomcat+Apache+JK集群

    可以使用`ab`(Apache Bench)工具进行压力测试,查看负载均衡效果。 **集群优势:** 1. **负载均衡:** JK模块可以根据预设策略(如轮询、最少连接数等)将请求分发到不同Tomcat实例,避免单点故障。 2. **性能...

    httperf压力测试工具

    - **ab(ApacheBench)**: 是Apache自带的简单性能测试工具,功能相对简单。 - **JMeter**: 更为全面的性能测试工具,支持多种协议,但配置和使用相对复杂。 - **LoadRunner**: 企业级的性能测试工具,功能强大但...

    linux-Apache

    4. Apache Bench (`ab`):进行性能测试,评估服务器处理请求的能力。 七、备份与迁移 1. 备份:使用`tar`命令将Apache配置文件、网站文件和日志文件打包成`.tar.gz`文件,例如: ``` sudo tar -czvf apache_backup...

Global site tag (gtag.js) - Google Analytics