`
javahigh1
  • 浏览: 1288518 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

测试网站负载能力工具

 
阅读更多

服务器性能压力测试工具有 http_load,webbench,ab,Siege

webbench最多可以模拟3万个并发连接去测试网站的负载能力

1、适用系统:Linux


2、编译安装:

引用
wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

用法:

webbench -c 并发数 -t 运行测试时间 URL
如:
webbench -c 5000 -t 120 http://www.xxx.com

Siege
一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并 发访问下重复进行。
官方:http://www.joedog.org/
Siege下载:http://deepvps.googlecode.com/files/siege-2.67.tar.gz

解压:
# tar -zxf siege-2.67.tar.gz
进入解压目录:
# cd siege-2.67/
安装:
#./configure ; make
#make install

使用
siege -c 200 -r 10 -f example.url
-c是并发量,-r是重复次数。 url文件就是一个文本,每行都是一个url,它会从里面随机访问的。

example.url内容:

http://www.deepvps.com

结果说明
Lifting the server siege… done.
Transactions: 3419263 hits //完成419263次处理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 5999.69 secs //总共用时
Data transferred: 84273.91 MB //共数据传输84273.91 MB
Response time: 0.37 secs //相应用时1.65秒:显示网络连接的速度
Transaction rate: 569.91 trans/sec //均每秒完成 569.91 次处理:表示服务器后
Throughput: 14.05 MB/sec //平均每秒传送数据
Concurrency: 213.42 //实际最高并发数
Successful transactions: 2564081 //成功处理次数
Failed transactions: 11 //失败处理次数
Longest transaction: 29.04 //每次传输所花最长时间
Shortest transaction: 0.00 //每次传输所花最短时间

ab
ab是apache自带的一款功能强大的测试工具。安装了apache一般就自带了,用法可以查看它的说明

$ ./ab
./ab: wrong number of arguments
Usage: ./ab [options] [http://]hostname[:port]/path
Options are:
-n requests Number of requests to perform
-c concurrency Number of multiple requests to make
-t timelimit Seconds to max. wait for responses
-p postfile File containing data to POST
-T content-type Content-type header for POSTing
-v verbosity How much troubleshooting info to print
-w Print out results in HTML tables
-i Use HEAD instead of 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)
-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.
-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)
参数众多,一般我们用到的是-n 和-c
例如:
./ab -c 1000 -n 100 http://www.xxx.com/index.php

这个表示同时处理1000个请求并运行100次index.php文件.

参数
-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的数据的文件.
-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 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 参数就可以了. 例如:
打开cmd,输入 以下代码。
cd C:/Apache2.2/bin
ab -n 1000 -c 100 [url]http://zf.guqin.com/index/index[/url]
这个表示同时处理100个请求并运行1000次index.php文件。以下是打印出来的内容。
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, [url]http://www.zeustech.net/[/url]
Copyright (c) 1998-2002 The Apache Software Foundation, [url]http://www.apache.org/[/url]
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.2.8
//平台apache 版本2.2.8
Server Hostname: zf.guqin.com
//服务器主机名
Server Port: 80
//服务器端口
Document Path: /index.php
//测试的页面文档
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
66% 1247
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时间乘以并发请求数。

http_load

程序非常小,解压后也不到100K

http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工

具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。

下载地址:http://deepvps.googlecode.com/files/http_load-12mar2006.tar.gz

安装很简单
#tar zxvf http_load-12mar2006.tar.gz
#cd http_load-12mar2006
#make && make install

命令格式:http_load -p 并发访问进程数 -s 访问时间 需要访问的URL文件

参数其实可以自由组合,参数之间的选择并没有什么限制。比如你写成http_load -parallel 5 -seconds

300 urls.txt也是可以的。我们把参数给大家简单说明一下。
-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-p :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间

准备URL文件:urllist.txt,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好。文件格式

例如:

http_load -p 30 -s 60 urllist.txt
参数了解了,我们来看运行一条命令来看看它的返回结果
命令:% ./http_load -rate 5 -seconds 10 urls说明执行了一个持续时间10秒的测试,每秒的频率为5。

49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds5916 mean bytes/connection4.89274

fetches/sec, 28945.5 bytes/secmsecs/connect: 28.8932 mean, 44.243 max, 24.488 minmsecs/first

-response: 63.5362 mean, 81.624 max, 57.803 minHTTP response codes: code 200 — 49

结果分析:
1.49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒
2.5916 mean bytes/connection说明每一连接平均传输的数据量289884/49=5916
3.4.89274 fetches/sec, 28945.5 bytes/sec
说明每秒的响应请求为4.89274,每秒传递的数据为28945.5 bytes/sec
4.msecs/connect: 28.8932 mean, 44.243 max, 24.488 min说明每连接的平均响应时间是28.8932 msecs,最大的响应时间44.243 msecs,最小的响应时间24.488 msecs
5.msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
6、HTTP response codes: code 200 — 49 说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。

特殊说明:
测试结果中主要的指标是 fetches/sec、msecs/connect 这个选项,即服务器每秒能够响应的查询次数,用这个指标来衡量性能。似乎比 apache的ab准确率要高一些,也更有说服力一些。
Qpt-每秒响应用户数和response time,每连接响应用户时间。
测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论

分享到:
评论

相关推荐

    网站负载压力测试工具(单机版)

    单机版的网站负载压力测试工具提供了对服务器和网站性能进行评估的便捷方式,尤其适合个人开发者或者小型团队使用。本篇文章将深入探讨这类工具的重要性和使用方法。 一、负载压力测试的重要性 1. **性能优化**:...

    关于网站负载压力的测试工具

    网站负载压力测试是确保Web应用程序稳定性和性能的关键环节。它主要目的是模拟大量用户同时访问网站,以检测系统在高负载下的响应时间、处理能力以及资源消耗情况,从而找出潜在的性能瓶颈、稳定性问题或者系统崩溃...

    EasyWebLoad网站负载压力测试工具

    EasyWebLoad是一款强大的网站负载压力测试工具,专为评估和优化网站在高并发访问下的性能而设计。在网站开发和运维过程中,理解系统的承载能力、响应时间和稳定性至关重要,而EasyWebLoad正好能满足这些需求。这款...

    基于GO语言开发的高性能负载测试工具

    【基于GO语言开发的高性能负载测试工具】 Go(也称为Golang)是一种由Google开发的开源编程语言,设计时特别注重简洁、效率和可移植性。由于其内建的并发模型和高效的垃圾回收机制,Go语言非常适合用于开发高性能的...

    Web服务稳定性测试 负载测试 可靠性测试 测试报告

    首先,稳定性测试是衡量系统在长时间运行下保持正常服务的能力,主要关注系统在承受一定业务压力后的持久性和可靠性。通过模拟真实用户行为,观察系统在不同负载下的表现,可以发现潜在的问题,如内存泄漏或服务不可...

    简单的web负载测试工具

    简单来说,负载测试就是模拟大量用户同时访问网站或应用,以检验其在高压力下的性能表现。在本例中,我们关注的是一个名为"简单的web负载测试工具",这个工具主要用于测试与HTTP协议相关的GET和POST请求。 HTTP(超...

    Windows下负载测试工具

    "Windows下负载测试工具"就是针对这一需求而设计的软件,它能够模拟多用户并发操作,以测试系统在高负载条件下的运行状态。这种工具广泛应用于服务器性能评估、硬件测试以及系统优化等场景。 1. **CPU负载测试工具*...

    Web性能测试与负载测试

    - **负载测试**:则是模拟大量并发用户对Web应用发起请求,以此来测试系统的最大负载能力和稳定性。通过这种方式,可以识别出系统在高负载情况下的瓶颈。 #### 二、基于WEB测试和Ajax ##### 5.1.1 录制一个Web测试...

    CPU负载测试工具 电脑维修测试用

    标题提到的“CPU负载测试工具 电脑维修测试用”显然是一款专为此目的设计的软件。描述中指出,这款工具能够使CPU达到100%的工作负荷,这样我们可以观察系统在满负荷运行时可能出现的问题,从而找出可能的硬件或软件...

    Web_Application_Stress_Tool(WAS,Web应用负载测试工具)详细说明1.doc

    该工具不仅能够帮助识别潜在的性能瓶颈,还能提供有关服务器负载能力的重要数据。WAS具备以下几个核心特点: - **免费提供**:作为一款由微软官方开发的工具,WAS完全免费供用户使用。 - **功能强大**:它能够模拟...

    测试理论知识,包含测试技能,测试用例设计,自动化测试方法,性能测试方法,相关工具介绍

    性能测试工具常用于模拟不同的用户负载,如并发用户数量、数据吞吐量,来测量系统的响应时间和稳定性。安全测试工具则用于检测安全漏洞,如用户认证、访问控制和数据保护等方面的问题。 综上所述,测试理论知识的...

    负载测试工具LoadRunner教程

    【负载测试工具LoadRunner教程】 LoadRunner是一款由Micro Focus公司开发的业界领先的性能测试工具,广泛应用于企业级软件系统的性能评估。它通过模拟大量并发用户,来检测系统在高负载下的性能表现,找出可能的...

    数据中心假负载验证测试实战指导方案(精华资料)

    在测试工具的选择上,机架式假负载是必不可少的工具之一,它能够模拟真实服务器运行时的电热转换效率和散热需求。除此之外,还包括热成像仪、电能质量分析仪等先进的监测设备,用于记录和分析测试过程中的系统运行...

    webcc网站压力测试工具.zip

    WebCC是一款针对网站性能和稳定性的专业压力测试工具,主要用于评估网站在高并发访问下的响应速度和负载能力。这个压缩包文件包含了WebCC的压力测试软件“独醉cc.exe”,以及可能的辅助材料如“测试图.png”(可能...

    宽带连接数测试工具,宽带压力测试工具,宽带TCP测试工具

    它模拟高负载情况,对网络的带宽、延迟和丢包率等参数进行测试,以评估在网络拥堵情况下服务的稳定性。在进行大型文件传输、多人在线游戏或者云服务时,压力测试能确保网络在高流量下仍能正常运作。这种测试对于网络...

    XY.CN标准总线测试负载

    这些模型能够测试总线驱动器的负载能力,确保在最大负载下仍能保持信号质量。 2. **信号完整性分析**:通过Protel99的信号完整性工具,可以模拟信号在传输过程中的衰减、反射、噪声等现象,评估总线的抗干扰能力和...

    TCP负载测试工具(两款)

    本话题将深入探讨两款TCP负载测试工具,帮助你理解和应用它们进行性能测试。 首先,TCP负载测试的主要目标是评估系统在高并发连接下的表现,如吞吐量、响应时间和连接稳定性。这些工具通常可以模拟多个用户同时连接...

    负载压力测试及故障

    4. **Locust**:Python编写的开源负载测试工具,易于编写测试脚本。 #### 五、故障处理与分析 在进行负载压力测试时,可能会遇到各种各样的问题和故障。正确地处理这些问题对于确保测试的有效性和准确性至关重要。...

    Locust负载测试工具 v2.24.1.zip

    综上所述,Locust v2.24.1 是一个强大的负载测试工具,通过Python脚本编写测试逻辑,可以方便地进行分布式性能测试,帮助开发者评估和优化系统的承载能力。对于软件测试人员来说,熟练掌握Locust的使用是提升工作...

    Go-slapper简单的负载测试工具具有实时更新的请求时序直方图

    1. **性能基准测试**:确定系统在正常负载下的处理能力,例如每秒处理的请求数(RPS)。 2. **压力测试**:逐步增加负载,直至系统达到性能极限,观察系统在极限状态下的稳定性和可恢复性。 3. **稳定性测试**:长...

Global site tag (gtag.js) - Google Analytics