web压力测试工具(小而精)
实际的测试过程中,我们一般都是采用A、B两台机器,一台跑Web服务,另外一台跑ab测试。也有的情况是单机对单机可能测不出结果,那就要采用很多台机器同是跑AB去请求一台机器进行测试,根据多台机器反馈的结果才能够得出一个科学的测试结果。
1.APACHE ab
ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。
ab 不像 LR 那么强大,但是它足够轻便,如果只是在开发过程中想检查一下某个模块的响应情况,或者做一些场景比较简单的测试,ab 还是一个不错的选择。
1.1. 参数说明
-n requests
在测试会话中所执行的请求个数。默认仅执行一个请求,此时其结果不具有意义。
-c concurrency
一次产生的请求个数。默认是一次一个。
-t timelimit
测试所进行的最大秒数。内部隐含值是"-n 50000"。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p POST-file
包含了POST数据的文件。
-T content-type
POST数据时所使用的"Content-type"头信息。
-v verbosity
设置显示信息的详细程度,4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。
-w
以HTML表格形式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i
执行HEAD请求,而不是GET 。
-x <table>-attributes
设置<table>属性的字符串。此属性被填入<table 这里 > 。
-y <tr>-attributes
设置<tr>属性的字符串。
-z <td>-attributes
设置<td>属性的字符串。
-C cookie-name=value
对请求附加一个"Cookie:"头行。其典型形式是 name=value 的一个参数对。此参数可以重复。
-H custom-header
对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。
-A auth-username:password
向服务器提供基本认证信息。用户名和密码之间由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送。
-P proxy-auth-username:password
对一个中转代理提供基本认证信息。用户名和密码由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了407代理认证需求代码),此字符串都会被发送。
-X proxy[:port]
对请求使用代理服务器。
-V
显示版本号并退出。
-k
启用KeepAlive功能,即在一个HTTP会话中执行多个请求。默认不启用KeepAlive功能。
-d
不显示"percentage served within XX [ms] table"消息(为以前的版本提供支持)。
-S
不显示中值和标准偏差值,而且在均值和中值为标准偏差值的1到2倍时,也不显示警告或出错信息。默认时,会显示最小值/均值/最大值等数值。(为以前的版本提供支持)
-g gnuplot-file
把所有测试结果写入一个"gnuplot"或者TSV(以Tab分隔)文件。此文件可以方便地导入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行为标题。
-e csv-file
产生一个逗号分隔(CSV)文件,其中包含了处理每个相应百分比请求(从1%到100%)所需要的相应百分比时间(以微秒为单位)。由于这种格式已经"二进制化",所以比"gnuplot"格式更有用。
-h
显示使用方法的帮助信息。
1.2. 举例
ab -c -n -t http://www.google.com/ 输出样例: This is ApacheBench, Version 2.0.-dev <$Revision: 1.146 $> apache-2.0 Copyright Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright The Apache Software Foundation, http://www.apache.org/ Benchmarking www.google.com (be patient) Finished requests Server Software: gws Server Hostname: www.google.com //服务器主机名 ServerPort: //服务器端口 Document Path: / //测试的页面文档 Document Length: bytes //文档大小 Concurrency Level: //并发数 Time taken for tests: 30.87239 seconds //整个测试持续的时间 Complete requests: //完成的请求数量 Failed requests: //失败的请求数量 Write errors: Non-2xx responses: Total transferred: bytes //整个场景中的网络传输量 HTML transferred: bytes //整个场景中的HTML内容传输量 Requests per second: 25.89 [#/sec] (mean) //大家最关心的指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值 Time per request: 386.229 [ms] (mean) //大家最关心的指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值 Time per request: 38.623 [ms] (mean, across all concurrent requests) //每个请求实际运行时间的平均值 Transfer rate: 32.57 [Kbytes/sec] received //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题 Connection Times (ms) min mean[+/-sd] median max Connect: 100.1 Processing: 143.6 Waiting: 117.4 Total: 175.8 //网络上消耗的时间的分解,各项数据的具体算法还不是很清楚 /*下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中 % 的用户响应时间小于 毫秒, % 的用户响应时间小于 毫秒,最大的响应时间小于 毫秒*/ Percentage of the requests served within a certain time (ms) % % % % % % % % % (longest request)
2.webbench
webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。它的帮助文件和文档请到:http://home.tiscali.cz/~cz210552/webbench.html 上查看。
Webbech 能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webBech的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数 和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力。还有就是 他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。
2.1. 参数说明
-f –force
不等服务器回复
-r –reload
发送重新load请求,等同于Pragma:no-cache.
-t –time
测试所进行的最大秒数。默认30。
-p –proxy
使用代理服务器
-c --clients
一次产生的请求个数。默认是1。
-9 --http09
使用http/0.9协议
-1 --http10
使用http/1.0协议
-2 –http11
使用http/1.1协议
--get
使用get请求方法
--head
使用head请求方法
--options
使用options请求方法
--trace
使用trace请求方法
-? –h –help
显示帮助信息
-V –version
显示程序的版本信息
2.2. 例子
webbench -c 100 -t 30 http://www.google.com/
输出样例:
Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar -, GPL Open Source Software. Benchmarking: GET http://www.google.com/ clients, running sec. Speed= pages/min, bytes/sec. Requests: susceed, failed.
3.http_load
程序非常小,解压后也不到100K
http_load以并行复用的方式运行,用以测试web服务器 的吞吐量与负载 。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。
官网:http://www.acme.com/software/http_load/
下载地址:
wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz
3.1. 参数说明
-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-r :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间
3.2. 例子
http_load -p 20 -f 20 www.chedong.com.url
输出样例:
fetches, max parallel, bytes, in 4.34421 seconds //说明在上面的测试中运行了20个请求,最大的并发进程数是20,总计传输的数据是790105bytes,运行的时间是4.34421秒 39505.2 mean bytes/connection //说明每一连接平均传输的数据量790105/20=39505.2 4.60383 fetches/sec, bytes/sec //说明每秒的响应请求为4.60383,每秒传递的数据为181875 bytes/sec msecs/connect: 305.351 mean, 3151.05 max, 146.267 min //说明每连接的平均响应时间是305.351msecs,最大的响应时间3151.05msecs,最小的响应时间146.267msecs msecs/first-response: 772.81 mean, 1555.86 max, 155.245 min HTTP response codes: code -- //说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统 遇到了瓶颈。
4.Siege
虽然Apache自带一个压力测试工具ab,但是ab的功能太简单了,无法模拟真实的web访问,所以我们要用到更加强大的web压力测试工具——Siege。Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
Siege时一个开放源代码项目:http://www.joedog.org/siege/下载:
wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz
4.1. 参数说明
-cNUM
设置并发的用户(连接)数量,比如-c10,设置并发10个连接。默认的连接数量可以到~/.siegerc中查看,指令为concurrent = x,前面咱们已经调整了默认并发连接为50。
-rNUM
(repetitions),重复数量,即每个连接发出的请求数量,设置这个的话,就不需要设置-t了。对应.siegerc配置文件中的reps = x指令
-tNUM
(time),持续时间,即测试持续时间,在NUM时间后结束,单位默认为分,比如-t10,那么测试时间为10分钟,-t10s,则测试时间为10秒钟。对应.siegerc中的指令为time = x指令
-b
(benchmark),基准测试,如果设置这个参数的话,那么delay时间为0。在.siegerc中咱们修改为默认开启。
-f url.txt
(file),这是url列表文件。对应.siegerc配置文件中的file = x指令
4.2. 例子
siege -c 20 -r 20 -f www.chedong.com.url
www.chedong.com.url内容:
http://www.chedong.com/tech/
http://www.chedong.com/tech/acdsee.html
http://www.chedong.com/tech/ant.html
http://www.chedong.com/tech/apache_install.html
http://www.chedong.com/tech/awstats.html
http://www.chedong.com/tech/cache.html
http://www.chedong.com/tech/click.html
http://www.chedong.com/tech/cms.html
http://www.chedong.com/tech/compress.html
http://www.chedong.com/tech/cvs_card.html
http://www.chedong.com/tech/default.html
http://www.chedong.com/tech/dev.html
http://www.chedong.com/tech/gnu.html
输出样例:
Lifting the server siege… done. Transactions: hits //完成400次处理 Availability: 100.00 % //100.00 % 成功率 Elapsed time: 34.61 secs //总共用时 Data transferred: 3.94 MB //共数据传输3.94MB Response time: 1.37 secs //相应用时1.37秒:显示网络连接的速度 Transaction rate: 11.56 trans/sec //平均每秒完成11.56次处理:表示服务器后台处理的速度 Throughput: 0.11 MB/sec //平均每秒传送数据0.11MB Concurrency: 15.87 //实际最高并发数15. Successful transactions: //成功处理次数 Failed transactions: //失败处理次数 Longest transaction: 11.13 //每次传输所花最长时间 Shortest transaction: 0.34 //每次传输所花最短时间
5. 对比
输出压力的能力:
软件 |
每秒处理数 |
webbench |
4876 |
ab |
4059 |
http_load |
3148 |
siege |
1822 |
从上面可以看过,webbench 能力最强, ab 紧接着来的。其它的压力软件,能打出的每秒的能力差些。
功能对比
针对一些常用的功能,进行了一下对比,方便我们选择自己合适的测试软件。
|
自定义http头 |
url列表 |
随机 URL |
https支持 |
KeepAlive |
cookie支持 |
HTTP1.0/1支持 |
认证支持 |
时间测试压力 |
webbench |
|
|
|
|
|
|
yes |
|
yes |
ab |
yes |
|
|
|
yes |
yes |
|
yes |
|
http_load |
|
yes |
yes |
yes |
|
|
|
|
yes |
siege |
yes |
yes |
yes |
yes |
|
|
|
|
|
注意:
1) 实际的测试过程中,我们一般都是采用A、B两台机器,一台跑Web服务,另外一台跑ab测试。也有的情况是单机对单机可能测不出结果,那就要采用很多台机器同是跑AB去请求一台机器进行测试,根据多台机器反馈的结果才能够得出一个科学的测试结果。做压力测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,请将测试软件安装在别的服务器上。
2) 不要测试上线之后的网站,压垮了可不好玩。
3) ab -n 100 -c 10 http://www.baidu.com/ ——(注意,这里要保留 "/" 根目录哦);webbench也是一样。
web压力测试工具(小而精)的更多相关文章
- web压力测试工具
ab apache 自带的web压力测试工具,window和linux下均有. 命令行:./ab -c 100 -n 1000 http://www.baidu.com 说明: -c 表示同时处理10 ...
- 推荐一个linux下的web压力测试工具神器webbench
推荐一个linux下的web压力测试工具神器webbench2014-04-30 09:35:29 来源: 评论:0 点击:880 用多了apache的ab工具之后你就会发现ab存在很多问题, ...
- python的web压力测试工具-pylot安装使用
http://blog.csdn.net/chenggong2dm/article/details/10106517 pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相 ...
- 分享一个.NET实现的简单高效WEB压力测试工具
在Linux下对Web进行压力测试的小工具有很多,比较出名的有AB.虽然AB可以运行在windows下,但对于想简单界面操作的朋友有点不太习惯.其实vs.net也提供压力测试功能但显然显得太重了,在测 ...
- WEB压力测试工具Pylot试用
Pylot介绍 转载自[http://www.freehao123.com/pylot-web/] 为了能够准确地评估网站服务器对网络流量的承受能力,我们一般会采取模拟网站用户访问,通过不断地增加并发 ...
- 网站性能Web压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: wget http:/ ...
- 十个免费的Web压力测试工具
两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ...
- linux下web压力测试工具ab使用及详解
APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下.格式: ./ab [options] [http://]hostname[:port]/path参数: ...
- 测者的性能测试手册:Web压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: wget http:/ ...
随机推荐
- 天气窗件展示 -一个HTML5 地理位置应用的例子
定位及地理位置信息是LBS应用的核心,和定位功能有所不同的是地理位置信息更关注如何得到有意义的信息.(例如一条街道的地址) 从这边文章里你会学到HTML5地理位置信息的各种功能.它 ...
- tf.Session()和tf.InteractiveSession()的区别
官方tutorial是这么说的: The only difference with a regular Session is that an InteractiveSession installs i ...
- 通过图片获取gps地理位置
别人说通过一张照片就可以定位你的位置,看来个视频,仔细研究了一下自己的照片没想到真的可以做到,想想真的有点可怕. 如何通过一张照片去定位这张照片的经纬度下面我以我手机中的照片为例. 我们通过pytho ...
- stdole.dll
迁移至win1064位后,发布提示stdole.dll错误,查找半天,是因为引用了office组件问题,将其注释掉.解决.因为此块代码无用,但是对有用的代码如何解决发布问题,未找到合适解决方法.
- Servlet3.0新特性WebFilter(Annotation Filter)详解
摘要: Servlet3.0作为J2EE 6规范一部分,并随J2EE6一起发布,WeFilter是过滤器注解,是Servlet3.0的新特性,不需要在web.xml进行配置,简化了配置. Name T ...
- SSH(Struts、Spring、Hibernate)三大框架整合
1. 新建数据库ssh_db -> 新建表user_tb(id为主键,自动递增) 2. 导入jar包(struts.hibernate 和 spring) 3. 注册页面reg.jsp,将表单的 ...
- Grinder搭建小记与Nduja(这次不待续了)
Grinder是比较有名的浏览器FUZZ框架,采用ruby语言编写,主要是作为测试框架来使用,在<白帽子讲浏览器安全>一书中作者使用了Nduja生成测试样本来配合Grinder使用.根据网 ...
- SqlServer自定义函数Function中调用with as
SET QUOTED_IDENTIFIER ON 标识符可以由双引号分隔,而文字必须由单引号分隔 SET QUOTED_IDENTIFIER OFF 标识符不可加引号,且必须遵守所有 Transact ...
- Java编程的逻辑 (2) - 赋值
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- weblogic在64位windows的设置
最近遇到一些问题,需要调整weblogic的内存用于做压力测试,weblogic默认的内存是远远不能满足当前测试需求.由于服务器是64位8G的内存,但是在服务器上安装的jdk和weblogic都是32 ...