ApacheAB测试_笔记讲解

合集下载

web压力测试工具ab天使羊波波闪耀光芒

web压力测试工具ab天使羊波波闪耀光芒

web压力测试工具ab 天使羊波波闪耀光芒26十/120web压力测试工具abab是apache自带的一款压力测试工具,安装完apache后就有了,一般在/usr/bin目录下。

系统为CentOS。

1、安装apacheyum install httpd2、ab使用方法形如ab -c 20 -n 1000 /-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压力测试结果报告

ab压力测试结果报告

AB压力测试结果报告1. 概述AB压力测试是一种常用的性能测试工具,用于评估系统在高负载情况下的稳定性和性能表现。

本报告旨在分析AB压力测试的结果,并给出相应的结论和建议。

2. 测试环境我们在以下环境中进行了AB压力测试:•操作系统:Linux Ubuntu 18.04•服务器配置:8核CPU,16GB内存•软件版本:AB 2.4.2,Apache 2.4.293. 测试目标我们的测试目标是评估系统在高并发访问下的性能表现,并确定其最大承载能力。

我们选择了一个典型的业务场景进行测试,模拟了大量用户同时访问服务器的情况。

4. 测试步骤我们按照以下步骤进行了AB压力测试:1.确定测试目标和场景,包括并发用户数、请求总数等。

2.配置AB测试工具,设置并发用户数、请求总数等参数。

3.启动AB测试工具,模拟用户的并发请求。

4.监控服务器的性能指标,包括响应时间、吞吐量等。

5.分析测试结果,得出结论和建议。

5. 测试结果我们进行了多次AB压力测试,得到了以下结果:并发用户数请求总数平均响应时间(ms)吞吐量(requests/sec)100 1000 50 20200 2000 60 25300 3000 70 30400 4000 80 35500 5000 90 40从上表中可以看出,随着并发用户数增加,平均响应时间逐渐增加,吞吐量也在增加。

然而,在并发用户数达到400时,平均响应时间开始急剧增加,吞吐量增长缓慢。

这表明系统在400并发用户的情况下已接近极限。

6. 结论和建议根据我们的测试结果,我们得出以下结论和建议:•系统的最大承载能力约为400并发用户。

当并发用户数超过400时,系统的性能明显下降,响应时间增加。

•为了提高系统的性能,可以考虑进行以下优化措施:–对代码进行性能优化,减少响应时间。

–增加服务器的硬件配置,以提高系统的处理能力。

–使用负载均衡技术,将请求分发到多台服务器上,以提高系统的吞吐量。

apachebench并发原理

apachebench并发原理

apachebench并发原理Apache Bench(简称ab)是Apache自带的一个基准测试工具,用于测试Web服务器的性能。

它可以模拟多个并发的用户请求,并计算服务器的响应时间和吞吐量。

在本文中,我们将探讨ab工具的并发原理。

在使用ab工具进行测试时,可以通过设置“-c”参数指定并发连接的数量。

并发连接是指在同一时间内与服务器建立的连接数量。

通过增加并发连接数,可以模拟更多的用户同时访问服务器。

ab工具的并发原理主要包括以下几个方面:1.建立连接:在ab工具中,每个并发连接都代表一个用户请求。

在测试开始时,ab工具会创建指定数量的并发连接,并与服务器建立连接。

ab工具使用了非阻塞IO的机制,可以同时处理多个连接。

2.发送请求:一旦连接建立完成,ab工具会向服务器发送HTTP请求。

这些请求可以是GET、POST等,还可以包含请求头、请求体等信息。

ab工具使用多线程技术,可以同时向多个连接发送请求。

3.等待响应:一旦请求发送完成,ab工具就会等待服务器的响应。

在等待响应的过程中,ab工具会继续发送其他请求,以充分利用并发连接。

4.接收响应:一旦服务器响应完成,ab工具会接收并记录响应的信息,包括状态码、响应时间等。

ab工具使用异步IO的机制,可以同时接收多个连接的响应。

5.统计结果:在所有请求完成之后,ab工具会根据接收到的响应信息计算性能指标,如吞吐量、响应时间等。

ab工具还可以生成报告,展示测试结果的详细信息。

在ab工具的并发原理中,存在以下一些要点:1.非阻塞IO:ab工具使用非阻塞IO的机制,在等待服务器响应的同时可以继续发送其他请求。

这样可以充分利用并发连接,提高测试效率。

2.多线程:ab工具使用多线程技术,可以同时处理多个连接的请求和响应。

这样可以提高并发连接的数量,模拟更多的用户同时访问服务器。

3.异步IO:ab工具使用异步IO的机制,在接收响应的同时可以继续发送其他请求。

这样可以提高测试的并发能力,提高吞吐量。

Mac下的Web性能压力测试工具:ab(ApacheBench)

Mac下的Web性能压力测试工具:ab(ApacheBench)

Mac下的Web性能压⼒测试⼯具:ab(ApacheBench)Web开发,少不了的就是压⼒测试,它是评估⼀个产品是否合格上线的基本标准。

ab是⼀种⽤于测试Apache超⽂本传输协议(HTTP)服务器的⼯具。

apache⾃带,可以测试Apache、IIS、Tomcat、Nginx等Web服务器,因为apache是跨平台的,所以在Mac、Linux、Windows等系统下,只要安装了apache就能使⽤ab⼯具。

Ubuntu系统安装测试⼯具:sudo apt-get install apache2-utilsCentOS系统安装测试⼯具:yum -y install httpd-toolsmac⾃带的apache中的ab是有最⼤并发限制的,您可以重新并且编译(可以参考),安装之前记得卸载原来的哦。

ab是⾮图形化的并发测试⼯具,没有Jmeter、Loadrunner那样有各种场景设计、各种图形报告和监控,只需⼀个命令即可,有输出描述,可以简单的进⾏⼀些压⼒测试。

当然,您也可以选择webbench、siege、http_load、Load impact、阿⾥云PTS等⼯具进⾏很⽅便的测试。

Mac下⾃带apache,查看版本:apachectl -vServer version: Apache/2.4.34 (Unix)Server built: Feb 22 2019 20:20:11查看ab版本:ab -Vab压⼒测试⼯具的⽤法,查看:ab --help或者man ab# 按Ctrl+z组合键,或者按q键退出例如:ab -c 并发数 -n 请求数 URLab⼯具常⽤参数:-n :总共的请求执⾏数,缺省是1;-c:并发数,缺省是1;-t:测试所进⾏的总时间,秒为单位,缺省50000s-p:POST时的数据⽂件-w: 以HTML表的格式输出结果ab -n 100 -c 10 -w / >> baidu.html# 结果界⾯和下⾯例⼦是⼀样的,只是以html⽂件形式保存⽽已。

ab命令细致讲解 -回复

ab命令细致讲解 -回复

ab命令细致讲解-回复ab命令是一个使用广泛的Apache压力测试工具。

它可以模拟多个并发用户同时访问某个网址,以此来评估网站的性能。

在本文中,我们将详细介绍ab命令的使用方法和各种参数的含义。

1. 安装和启动ab命令ab命令通常与Apache服务器一起安装。

要确保安装了Apache,可以使用以下命令来检查:which ab/usr/sbin/ab如果没有安装,可以使用以下命令来安装:sudo apt-get install apache2-utils安装完成后,可以验证是否安装成功:ab -VThis is ApacheBench, Version 2.3 <Revision: 1874286 >2. 使用基本的ab命令ab命令的基本语法如下:ab [选项] [URL]URL是要测试的网址。

以下是一个示例:ab -n 100 -c 10这个命令将模拟10个并发用户,总共发送100个请求到3. ab命令的常用选项ab命令提供了许多选项,可以根据需要进行配置。

下面是一些常见的选项:- -n:发送的请求数。

- -c:并发请求的数量。

- -t:测试的最长时间。

- -k:启用HTTP KeepAlive功能。

- -r:允许重定向。

- -A:使用基本验证,指定用户名和密码。

- -p:使用POST请求,并指定POST数据的文件。

- -H:指定请求头。

4. 测试网站的性能使用ab命令可以测试网站的性能。

以下是一些常见的测试场景:- 测试网站的响应时间:ab -n 1000 -c 100- 测试网站的吞吐量:ab -n 1000 -c 100 -k- 测试网站的并发连接数:ab -n 1000 -c 100 -k -r5. 解读ab命令的输出ab命令的输出提供了关于网站性能的详细数据。

以下是一些重要的数据指标:- 请求数(Requests):发出的请求数量。

- 成功请求数(Successful requests):请求成功返回的数量。

ab压力测试使用说明

ab压力测试使用说明

ab压⼒测试使⽤说明ab是apache⾃带的压⼒测试⼯具,安装完apache之后在bin⽬录下存在,说明ab不⽀持https加密协议,如果测试https,需要试⽤同⽬录下的abs⽂件。

ab/abs 命令参数:-n 总请求数量-c 每次请求的并发数更多的ab参数可以通过执⾏ab命令获取帮助⽂档。

返回结果说明:Server Software: Apache/2.2.19 ##apache版本Server Hostname: ##请求的机⼦Server Port: 80 ##请求端⼝Document Path: /a.htmlDocument Length: 25 bytes ##页⾯长度Concurrency Level: 100 ##并发数Time taken for tests: 0.273 seconds ##共使⽤了多少时间Complete requests: 1000 ##请求数Failed requests: 0 ##失败请求Write errors: 0Total transferred: 275000 bytes ##总共传输字节数,包含http的头信息等HTML transferred: 25000 bytes ##html字节数,实际的页⾯传递字节数Requests per second: 3661.60 [#/sec] (mean) ##每秒多少请求,这个是⾮常重要的参数数值,服务器的吞吐量Time per request: 27.310 [ms] (mean) ##⽤户平均请求等待时间Time per request: 0.273 [ms] (mean, across all concurrent requests) ##服务器平均处理时间,也就是服务器吞吐量的倒数Transfer rate: 983.34 [Kbytes/sec] received ##每秒获取的数据长度Connection Times (ms)min mean[+/-sd] median maxConnect: 0 1 2.3 0 16Processing: 6 25 3.2 25 32Waiting: 5 24 3.2 25 32Total: 6 25 4.0 25 48Percentage of the requests served within a certain time (ms)50% 25 ## 50%的请求在25ms内返回66% 26 ## 60%的请求在26ms内返回75% 2680% 2690% 2795% 3198% 3899% 43100% 48 (longest request)题外话:由于ab⼯具的特性,也可以⽤作DDOS的攻击⼯具哦。

ab 标准程序

ab 标准程序

ab 标准程序
"ab" 通常不是一个标准的程序名,而是一个缩写或命令的简写。

如果您指的是 Apache HTTP Server 的性能测试工具 "ab",则以下是一些关于它的基本信息。

Apache HTTP Server 性能测试工具 "ab" 是一个命令行工具,用于测试HTTP 服务器性能。

它可以模拟多个并发请求,并报告服务器的吞吐量、延迟和错误率等性能指标。

使用 "ab" 命令的一般语法如下:
```css
ab [options]
```
其中:
`[options]` 是可选的参数,用于指定测试的各种选项。

例如,`-n` 用于指定请求次数,`-c` 用于指定并发请求数等。

是可选的协议前缀,表示使用 HTTP 协议进行测试。

`hostname` 是要测试的服务器的主机名或 IP 地址。

`port` 是服务器的端口号,默认为 80。

`/path` 是请求的路径或 URL。

以下是一个示例命令:
```css
ab -n 1000 -c 10
```
这个命令将向发送 1000 个请求,并使用 10 个并发连接进行测试。

测试结果将显示服务器的吞吐量、平均延迟和错误率等性能指标。

请注意,"ab" 是 Apache HTTP Server 的一个组件,因此需要在安装了Apache HTTP Server 的系统上才能使用。

ApacheAB测试_笔记

ApacheAB测试_笔记

1.Apache ab压力测试的参数说明发表时间:2010-02-06ab的全称是ApacheBench,是Apache附带的一个小工具,专门用于HTTP Server的benchmark testing,可以同时模拟多个并发请求。

前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。

开源工具通常都是为了某个特定的目的而开发出来的,所以如果想找到一个开源的性能测试工具去与LoadRunner或者QALoad之类去比较,实在有些勉强。

但是开源工具也有它自己的优势:小巧、轻便,在自己擅长的领域可以提供优秀的解决方案。

APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下:ab.exe。

格式:./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。

它可以使对服务器的测试限制在一个固定的总时间以内。

默认时,没有时间限制。

(作用像W AS一样)-p postfile File containing data to POST//包含了需要POST的数据的文件.-T content-type Content-type header for POSTing//POST数据所使用的Content-type头信息。

-v verbosity How much troubleshooting info to print//设置显示信息的详细程度- 4或更大值会显示头信息,3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。

Ab工具基本使用

Ab工具基本使用

Ab⼯具基本使⽤Ab简介ab是apache⾃带的压⼒测试⼯具,ab是apachebench命令的缩写。

ab不仅可以对apache服务器进⾏⽹站访问压⼒测试,也可以对或其它类型的服务器进⾏压⼒测试。

ab是⼀个httpd⾃带的很好⽤的压⼒测试⼯具,ab命令会创建多个并发访问线程,模拟多个访问者同时对某⼀URL地址进⾏访问。

可以⽤来测试apache的负载压⼒,也可以⽤来测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压⼒负载性能。

官⽹:⽰例:Centos安装安装abyum -y install httpd-tools查看版本[root@gzf~]# ab -V[root@gzf~]# which ab参数说明查看帮助[root@tj-32-42 ~]# ab --helpab: wrong number of argumentsUsage: ab [options] [http[s]://]hostname[:port]/pathOptions are:-n 要执⾏请求数,默认会执⾏⼀个请求-c ⼀次执⾏多个请求的数量,默认是⼀次⼀个请求。

-t ⽤于基准测试的最⼤秒数,使⽤它在固定的总时间内对服务器进⾏基准测试。

默认情况下,没有时间限制。

-s 超时之前等待的最⼤秒数。

默认值是30秒。

-b TCP发送/接收缓冲区的⼤⼩,以字节为单位。

-B 进⾏传出连接时要绑定的地址。

-p 包含数据到POST的⽂件。

还请记住设置-T。

-u 包含PUT数据的⽂件。

还请记住设置-T 。

-T Content-type⽤于POST / PUT数据的内容类型内容类型标题,例如:'application/x-www-form-urlencoded' 默认是'text/plain'-v verbosity 要打印多少个疑难解答信息,设置详细级别 - 4和以上打印标题信息,3和以上打印响应代码(404,200等),2和以上打印警告和信息。

5分钟学会压力测试(ab测试)

5分钟学会压力测试(ab测试)

林忠明
第2课时 ab压力测试实战
ab原理 创建多个并发线程,模拟多个用户同时访问某一地址。源自ab安装用于测试的接口
【yum -y install httpd-tools】
测试安装是否成功: 【 ab -V】
ab压力测试实战 【ab -c 10 -n 100 http://192.168.0.207:8080/teacher】
林忠明
第2课时 ab压力测试实战
压力测试结果
反复调整 -c -n参数, 在允许的正确率及响应时间内得到最大的吞吐量 【ab -c 10 -n 100 http://192.168.0.207:8080/teacher】
林忠明
第3课时 ab压力测试发出post json请求
准备json文件 【vi request.json】 {"id":"1","name":"店1"} 发出post json请求 【ab -c 10 -n 100 -p request.json -T 'application/json' http://192.168.0.207:8080/teacher】
林忠明
第1课时 ab介绍
林忠明
压力测试工具 roadrunner, jmeter roadrunner最老牌,重量级的,jmeter相比更轻量级。
学会都要花大量的时间,有很多人学到一半就放弃了。 要学会压力测试,先要给减少自己“压力”,用ab就对了。
ab出自名门apache,简单高效。轻轻松松学会压力测试。 最重要的是:跟着我学会用ab做压力测试,仅需5分钟!!!

ab压测用法

ab压测用法

ab压测用法
AB压测是一种常用的性能测试工具,被广泛应用于系统的性能评估和负载测试中。

下面将介绍AB压测的用法。

AB压测工具是Apache服务器自带的一个命令行工具,用于模拟并发用户对服务器发起HTTP请求,并统计服务器的响应时间和并发处理能力。

使用AB压测工具很简单,只需要在命令行中输入以下命令:
```
ab -n 请求总数 -c 并发数 URL
```
其中,请求总数表示总共发送的请求次数,并发数表示同时发起的并发请求数量,URL表示要测试的目标地址。

通过调整这三个参数,可以模拟不同场景下的性能测试。

AB压测工具会发送大量的HTTP请求到目标服务器,并记录下每个请求的响应时间、成功次数、失败次数等信息。

测试完成后,AB压测会给出统计结果,包括平均响应时间、吞吐量、错误率等指标,从而评估服务器的性能表现和稳定性。

在进行AB压测时,需要注意以下几点:
1. 尽量选择具有代表性的测试数据,能够模拟真实的用户访问情况。

2. 预先了解服务器的性能指标和性能瓶颈,设置合适的请求总数和并发数。

3. 根据测试结果进行调优和优化,提高系统的性能和并发处理能力。

总之,AB压测是一种简单易用的性能测试工具,通过模拟用户访问行为,可以评估系统的性能表现和瓶颈,并进行相应的性能优化。

在实际使用中,我们可以根据具体需求调整测试参数,以达到准确评估系统性能的目的。

使用apache的ab命令进行压测

使用apache的ab命令进行压测

使⽤apache的ab命令进⾏压测1. 背景:互联⽹发达的今天,⼤⼤⼩⼩的⽹站如⾬后春笋,不断出现,但是想要做出⼀个⽹站很简单,但是想要做好⼀个⽹站,⾮常⾮常难,⾸先:⽹站做好之后的功能怎么样这都是次要的,主要的是你的⽹站能承受怎么样的访问量,⼀个在⾼压访问下,能承受很⾼峰值的访问并发才能称得上是⼀个好的⽹站,那么作为⼀个程序员,当你搭建好你的⽹站之后,你应该怎么测试你的⽹站并发访问量呢?接下来要介绍的就是apache的ab命令压测:2.在学习使⽤ab命令之前,⾸先要了解压⼒测试的⼏个概念:(⾃⼰可以上⽹查下具体的概念)1. 吞吐率(Requests per second)概念:服务器并发处理能⼒的量化描述,单位是reqs/s,指的是某个并发⽤户数下单位时间内处理的请求数。

某个并发⽤户数下单位时间内能处理的最⼤请求数,称之为最⼤吞吐率。

计算公式:总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time taken for tests2. 并发连接数(The number of concurrent connections)概念:某个时刻服务器所接受的请求数⽬,简单的讲,就是⼀个会话。

3. 并发⽤户数(The number of concurrent users,Concurrency Level)概念:要注意区分这个概念和并发连接数之间的区别,⼀个⽤户可能同时会产⽣多个会话,也即连接数。

4. ⽤户平均请求等待时间(Time per request)计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发⽤户数),即Time per request = Time taken for tests /( Complete requests / Concurrency Level)5. 服务器平均请求等待时间(Time per request: across all concurrent requests)计算公式:处理完成所有请求数所花费的时间 / 总请求数,即Time taken for / testsComplete requests可以看到,它是吞吐率的倒数。

ab压测用法 -回复

ab压测用法 -回复

ab压测用法-回复正如主题所提到的,本文将详细介绍关于ab压测工具的用法和流程。

ab 压测工具是Apache HTTP服务器的一部分,用于测试Web服务器的性能和稳定性。

本篇文章将逐步介绍如何使用ab进行压测,并给出一些建议和注意事项。

首先,让我们从ab工具的安装和配置开始。

第一步:安装ab工具ab工具通常已经包含在Apache HTTP服务器软件中,因此可以通过安装Apache来获得ab工具。

具体安装步骤将根据操作系统而有所不同。

例如,在Ubuntu上可以使用以下命令进行安装:sudo apt-get updatesudo apt-get install apache2-utils完成安装后,可以通过运行`ab -V`命令验证是否成功安装ab工具。

如果该命令显示出ab版本信息,则说明安装成功。

第二步:配置被测服务器在进行压测之前,需要确保被测服务器已经部署和配置完成。

这包括服务器软件的安装和基本的性能调优。

通常,被测服务器的配置和性能对压测结果会有重要影响。

因此,确保服务器已经按照最佳实践进行配置是非常关键的。

第三步:进行基本压测在了解了ab工具的安装和被测服务器的配置后,我们可以开始进行基本的压测了。

以下是ab工具的基本用法:ab -n [请求总数] -c [并发数] [URL]其中,参数说明如下:- `-n`:指定总共的请求数。

例如,`-n 1000`表示向被测服务器发送1000个请求。

- `-c`:指定并发请求数。

例如,`-c 100`表示同时发送100个并发请求。

- `URL`:被测服务器的URL地址。

例如,要对一个URL为`ab -n 1000 -c 100执行完上述命令后,ab工具将会输出相关的统计信息,包括请求数、吞吐量、请求时间等。

第四步:高级压测配置除了基本的压测配置外,ab工具还支持一些高级的配置项,可以更好地模拟真实的压力情况。

以下是一些常用的高级配置项:- `-t`:指定压测的时间限制。

Apache下分析ab性能测试结果

Apache下分析ab性能测试结果

Apache下分析ab性能测试结果⼀直以来我都是⽤Loadrunner去做性能测试。

Loadrunner实际上是⼀个很重的性能测试⼯具。

他的功能很全⾯,是⼀把很好的⽜⼑。

如果我们只是需要对⼀个页⾯做简单的性能测试,使⽤Loadruner这把⽜⼑就不是⼀个很好的选择了。

所以就找了把⼩⼑--ab来试试。

这把⼩⼑真的是轻巧⼜锋利,在这⾥就记录⼀下对ab测试过程中的⼀些⾃⼰的理解,供⼤家参考。

我们就拿百度⾸页来祭⼑吧。

⾸先你得有⼀把⼑,也就是安装好Apache,⽹上教程⼀⼤堆就不复述了,本⽂使⽤MacBook⾃带的ab命令进⾏测试。

测试场景:模拟10个⽤户,对百度⾸页发起总共100次请求。

本⽂主要针对ab的测试报告进⾏解析,有关ab的使⽤⽅法改天再新开贴交流。

测试报告:下⾯来逐⾏解释我的理解,以下注释部分有查阅⽹上资料,但所写内容均为⾃⼰理解之后⼿打内容,希望加⼊⾃⼰的理解之后能让读者更容易理解。

This is ApacheBench, Version 2.3 <$Revision: 1706008 $>//以上为apache的版本信息,与本次测试⽆关Benchmarking (be patient).....done//以上内容显⽰测试完成度,本次测试发起请求数量较少,完成较快,⽆中间过程显⽰。

在请求数量很多时会分⾏显⽰当前完成数量。

Server Software: bfe/1.0.8.14 //被测试的服务器所⽤的软件信息,这⾥使⽤的是百度⾃⼰开发的反向代理Baidu Front End,类似nginx。

Server Hostname: //被测主机名Server Port: 443 //被测主机的服务端⼝号,⼀般http请求的默认端⼝号是80,https默认使⽤443端⼝SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128 //加密协议Document Path: /index.html //请求的具体⽂件Document Length: 227 bytes //请求的⽂件index.html⼤⼩Concurrency Level: 10 //并发级别,也就是并发数,请求中-c参数指定的数量Time taken for tests: 1.093 seconds //本次测试总共花费的时间Complete requests: 100 //本次测试总共发起的请求数量Failed requests: 0 //失败的请求数量。

(总结)Web性能压力测试工具之ApacheBench(ab)详解

(总结)Web性能压力测试工具之ApacheBench(ab)详解

(总结)Web性能压力测试工具之ApacheBench(ab)详解第一篇:(总结)Web性能压力测试工具之ApacheBench(ab)详解PS:网站性能压力测试是性能调优过程中必不可少的一环。

只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题。

Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试。

ApacheBench命令原理:ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。

它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。

自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

ApacheBench参数说明-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。

Apache的ab测试

Apache的ab测试

Apache的ab测试<!-- 博主所有⽂章仅是作为⾃⼰的笔记如有不⾜请见谅-->Apache的ab测试和 ab测试不是⼀个东西(百度 ab测试可以了解)⽹站性能压⼒测试是服务器⽹站性能调优过程中必不可缺少的⼀环,只有让服务器处在⾼压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。

性能测试⼯具⽬前最常见的有以下⼏种:ab、http_load、webbench、siege。

ab是apache⾃带的压⼒测试⼯具。

ab⾮常实⽤,它不仅可以对apache服务器进⾏⽹站访问压⼒测试,也可以对或其它类型的服务器进⾏压⼒测试。

⽐如nginx、tomcat、IIS等。

⼀、ab的原理ab是apachebench命令的缩写。

ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某⼀URL地址进⾏访问。

它的测试⽬标是基于URL的,因此,它既可以⽤来测试apache的负载压⼒,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压⼒。

ab命令对发出负载的计算机要求很低,它既不会占⽤很⾼CPU,也不会占⽤很多内存。

但却会给⽬标服务器造成巨⼤的负载,其原理类似CC攻击。

⾃⼰测试使⽤也需要注意,否则⼀次上太多的负载。

可能造成⽬标服务器资源耗完,严重时甚⾄导致死机。

LINUX 下: 如果apache 是通过yum的RPM包⽅式安装的话,ab命令默认存放在/usr/bin⽬录下。

如下: which ab 注意:如果不想安装apache但是⼜想使⽤ab命令的话,我们可以直接安装apache的⼯具包httpd-tools。

如下: yum -y install httpd-tools 查看ab是否安装成功,可以切换到上述⽬录下,使⽤ab –V命令进⾏检测。

如下: ab -V 如果ab安装成功,通过ab –V命令则会显⽰ab的相迎版本。

注意以上是在linux平台下进⾏安装的,如果是windows平台下,我们也可以下载对应的apache版本进⾏安装。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.Apache ab压力测试的参数说明发表时间:2010-02-06ab的全称是ApacheBench,是Apache附带的一个小工具,专门用于HTTP Server的benchmark testing,可以同时模拟多个并发请求。

前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。

开源工具通常都是为了某个特定的目的而开发出来的,所以如果想找到一个开源的性能测试工具去与LoadRunner或者QALoad之类去比较,实在有些勉强。

但是开源工具也有它自己的优势:小巧、轻便,在自己擅长的领域可以提供优秀的解决方案。

APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下:ab.exe。

格式:./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。

它可以使对服务器的测试限制在一个固定的总时间以内。

默认时,没有时间限制。

(作用像W AS一样)-p postfile File containing data to POST//包含了需要POST的数据的文件.-T content-type Content-type header for POSTing//POST数据所使用的Content-type头信息。

-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. 'Apache=1234. (repeatable)//-C cookie-name=value 对请求附加一个Cookie:行。

其典型形式是name=value的一个参数对。

此参数可以重复。

-H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip'Inserted after all normal header lines. (repeatable)-A attribute Add Basic WWW Authentication, the attributesare a colon separated username and password.-P attribute Add Basic Proxy Authentication, the attributesare 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.gb2312Benchmarking 127.0.0.1 (be patient)Completed 100 requestsCompleted 200 requestsCompleted 300 requestsCompleted 400 requestsCompleted 500 requestsCompleted 600 requestsCompleted 700 requestsCompleted 800 requestsCompleted 900 requestsFinished 1000 requestsServer Software: Apache/2.0.54//平台apache 版本2.0.54Server 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: 0Total 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 maxConnect: 4 646 1078.7 89 3291Processing: 165 992 493.1 938 4712Waiting: 118 934 480.6 882 4554Total: 813 1638 1338.9 1093 7785//网络上消耗的时间的分解,各项数据的具体算法还不是很清楚Percentage of the requests served within a certain time (ms)50% 109366% 124775% 137380% 149390% 406195% 439898% 560899% 7368100% 7785 (longest request)//整个场景中所有请求的响应情况。

在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于1093 毫秒,60%的用户响应时间小于1247 毫秒,最大的响应时间小于7785 毫秒由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数2.Apache ab 压力测试常用的方法(0)ab -t timelimit 可以像W AS一样指定压力测试时间.(1)ab测试-加入请求头属性:(2)ab测试-把短连接变成长连接测试:ab -n 10 -c 10 -k http://localhost/长连接测试时不行,30秒就timeout了。

(3)ab测试--把默认的get请求变成post请求:ab -n 10 -c 10 -p d:/night.txt –T 'application/x-www-form-urlencoded' http://localhost/说明: ab还提供了POST方式的测试,要post出去的参数信息需要从一个外部文件读入:在本地生成post.txt文件,内容为param1=abc&param2=def同时需要设置contentType,使用参数-T ,并设置参数值为application/x-www-form-urlencoded完整的ab post测试命令如下:ab -n 1 -p post.txt -T ‘application/x-www-form-urlencoded’ http://192.168.0.2/test.jsp(4)ab竟然不支持带多个http请求参数,即?后面只能有一个参数.第(3)种方法,我测试不行,而网上则说行.3.ab 限制用ab测试时,最大并发不能超过1024,其实ab本身没有做这个限制,而是系统限制每个进程打开的最大的文件数为1024,ulimit查看如下:[root@localhost ~]# ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedpending signals (-i) 1024max locked memory (kbytes, -l) 32max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 32765virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited而且open files这个选项在一般的系统里是不允许修改成无限制的,如下:[root@localhost ~]# ulimit -n unlimitedbash: ulimit: open files: cannot modify limit: Operation not permitted 但是稍微修改大一些或者是小一些,还是允许的,我们修改的小一些试试:[root@localhost ~]# ulimit -n 1020[root@localhost ~]# ulimit -n1020[root@localhost ~]#在用ab测试,错误如下:socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1019ioctl(1019, FIONBIO, [1]) = 0gettimeofday({1243919682, 867688}, NULL) = 0connect(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 -n10240[root@localhost ~]#但是我们发现改大却不行,这里却冒出了一个AF_AX25的名词:socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 1024ioctl(1024, FIONBIO, [1]) = 0gettimeofday({1243919592, 254950}, NULL) = 0connect(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) = 1025ioctl(1025, FIONBIO, [1]) = 0gettimeofday({1243919592, 255242}, NULL) = 0connect(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溢出造成的,但不确定哦:)。

相关文档
最新文档