网站性能压力测试是性能调优过程中必不可少的一环。只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题

ab测试

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

ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,因此是某些DDOS可能使用这种方法。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。

格式:ab [options] [http://]hostname[:port]/path

-n     #请求个数、本次测试总共要访问页面的次数。

-t     #并发数,默认是一次一个。

-t     #测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。

结果分析

Server Software: Apache/2.2.15

Server Hostname: 192.168.88.122

Server Port: 80

 

Document Path: /

Document Length: 3985 bytes            #页面大小

 

Concurrency Level: 50                    #并发数

Time taken for tests: 0.074 seconds            #测试时长

Complete requests: 100                #请求数

Failed requests: 0                    #失败请求数

Write errors: 0    

Non-2xx responses: 101

Total transferred: 421296 bytes            #整个过程网络传输量

HTML transferred: 401197 bytes        #HTML的传输量

Requests per second: 1344.05 [#/sec] (mean)

##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量        

Time per request: 37.201 [ms] (mean)    ##用户平均请求等待时间

Time per request: 0.744 [ms] (mean, across all concurrent requests)

##服务器平均处理时间,也就是服务器吞吐量的倒数

Transfer rate: 5529.72 [Kbytes/sec] received

#平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 7 6.7 7 19

Processing: 8 23 7.4 23 35

Waiting: 7 22 7.3 22 35

Total: 14 29 9.1 30 49

#网络上消耗的时间的分解

Percentage of the requests served within a certain time (ms)

50% 30

66% 35

75% 37

80% 38

90% 41

95% 42

98% 44

99% 49

100% 49 (longest request)

#整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于275毫秒,66%的用户响应时间小于298毫秒,最大的响应时间小于11843毫秒。对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数。

注意:在远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大),建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。如果只有单独的一台服务器,可以直接本地测试,比远程测试效果要准确。

 

http_load

安装:tar xf http_load-14aug2014.tar.gz; cd http_load-14aug2014; make && make install

参数:

-p 并发访问进程数

-f 总的访问次数

-r 每秒的访问频率,限制大于1小于1000

-s 总的访问时间

通常参数组合:-p –f;-r -s

urls.txt 是你要访问的网址名,参数可以是单个的网址也可以是包含网址的文件。建议不能过多

特点:支持http、https协议,请求方式默认为GET方式。不支持POST方式。

# ./http_load -p 2 -f 10 urls.txt

10 fetches, 2 max parallel, 984142 bytes, in 1.2792 seconds        

##请求数,最大的并行数,总计传输的数据,运行的时间

98414.2 mean bytes/connection

7.8174 fetches/sec, 769344 bytes/sec

#每秒响应请求数,每秒传输的数据

msecs/connect: 59.3131 mean, 66.998 max, 56.962 min

#连接的平均响应时间,最大响应时间,最小..

msecs/first-response: 65.8254 mean, 73.518 max, 58.01 min

8 bad byte counts

HTTP response codes:

code 200 – 10

#请求状态码

200成功,3xx重定向类

403,404客户端错误(服务器没有找到URL相符的资源) 如果403的类型过多,那可能要注意是否系统遇到了瓶颈

500 服务器内部错误

关注的重点是fetches/sec 、msecs/connect

siege

Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多

安装:yum install siege                        #epel enable

参数:

格式:[protocol://]host.domain.com[:port][path/to/file]

-C,或--config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.

-v 运行时能看到详细的运行信息

-c n,或--concurrent=n 模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多

-i,--internet 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效

-d n,--delay=n hit每个url之间的延迟,在0-n之间

-r n,--reps=n 重复运行测试n次,不能与 -t同时存在

-t n,--time=n 持续运行siege 'n'秒(如10S),分钟(10M),小时(10H)

-l 运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义

-b --benchmark 每个请求之间没有延时,也是很常用的设置

-f FILE, --file=FILE 指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt

 

实例:siege -c 300 -r 100 -f url.txt

#-c是并发量,-r是重复次数。url.txt中每行都是一个url,随机访问。

#siege -c 30 -r 2 localhost

Transactions:         60 hits            #完成测试数,并行数c * 重复数r

Availability:         100.00 %            #成功率

Elapsed time:         2.04 secs            #测试时长

Data transferred:     0.04 MB            #传输的数据量

Response time:         0.00 secs        #平均每个请求响应时间

Transaction rate:     29.41 trans/sec        #每秒完成事务

Throughput:         0.02 MB/sec        #平均每秒传输数据大小

Concurrency:         0.13                #最高并发连接数,当性能下降时,此值将加大

Successful transactions: 60            #成功事务数    http code < 400

Failed transactions:     0

Longest transaction:     0.03            #最长事务请求时间

Shortest transaction:     0.00

web简单的整体测试的更多相关文章

  1. Web下的整体测试 --性能测试及优化思路

    随着Internet的日益普及,现在基于B/S结构的大型应用越来越多,可如何对这些应用进行测试成为日益迫切的问题.有许多测试人员来信问我B/S的测试如何做,由于工作较繁忙,对大家提出的问题也是头痛医头 ...

  2. Web应用程序整体测试基础——单元测试

    近年来,随着基于B/S结构的大型应用越来越多,Web应用程序测试问题也在逐步完善中.但Web应用程序测试既可以在系统开发中实施,也可以独立于系统单独完成,这取决于Web应用程序的复杂性和多样性.同时程 ...

  3. 如何使用 JMeter 调用你的 Restful Web Service?进行简单的压力测试和自动化测试

    表述性状态传输(REST)作为对基于 SOAP 和 Web 服务描述语言(WSDL)的 Web 服务的简单替代,在 Web 开发上得到了广泛的接受.能够充分证明这点的是主流 Web 2.0 服务提供商 ...

  4. 九款Web服务器性能压力测试工具

    一.http_load 程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会 ...

  5. Aurelia – 模块化,简单,可测试的 JS 框架

    Aurelia 是下一代 JavaScript 客户端框架,利用简单的约定来激发你的创造力.凭借其强大的专注于开发经验, Aurelia 可以使您不仅创造惊人的应用程序,同时也享受这个过程.它经过精心 ...

  6. 云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    云优化的概念.Entity Framework 7.0.简单吞吐量压力测试 继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之 ...

  7. 安全测试 一次关于WEB的URL安全测试

    一次关于WEB的URL安全测试 by:授客 QQ:1033553122     测试思路: 时间精力问题,对web安全这块也没咋深入研究,但因为某个小插曲,公司要求先做个简单的安全测试,主要是针对UR ...

  8. Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程

    Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论   一.http_load 程序 ...

  9. 关于WEB的URL安全测试

    测试思路: 对WEB做个简单的安全测试,主要是针对URL的测试. 回想起来,这次测试本质可以归为“权限”的测试,如下: 案例1: 1.分别开两个浏览器,以两个不同的帐号登陆web后台 2.第一个浏览器 ...

随机推荐

  1. cocos2dx学习进度

    将cocos2dx实战上面的例子都自己过一遍,手动敲一边里面的代码,瓦片地图,地图滚动,碰撞,容器类,现在搞到了fileUtils相关的了,哦,官方叫做数据持久化,一不小心就6点了,时间过得太快了,看 ...

  2. vmware 自动挂起

    用VMware跑虚拟机,经常会出现客户操作系统自己挂起的现象,怀疑是主机自己休眠的设置.设置之后,无效. 后来才发现不是主机休眠设置,还是应该设置客户操作系统中的休眠设置. 在客户机,控制面板  电源 ...

  3. POJ1144 Network 无向图割点

    题目大意:求以无向图割点. 定义:在一个连通图中,如果把点v去掉,该连通图便分成了几个部分,则v是该连通图的割点. 求法:如果v是割点,如果u不是根节点,则u后接的边中存在割边(u,v),或者v-&g ...

  4. Mac开发必备工具(三)—— Fish shell

    Fish shell 简介 fish 可以根据输入自动匹配历史命令.它的一大特点是开箱即用,没有zsh那些繁琐的配置.官网:http://www.fishshell.com/. 安装与配置 在终端里使 ...

  5. [翻译]Unity中的AssetBundle详解(三)

    构建AssetBundles 在AssetBundle工作流程的文档中,我们有一个示例代码,它将三个参数传递给BuildPipeline.BuildAssetBundles函数.让我们更深入地了解我们 ...

  6. Python(2)(基本输入输出语句)

    我们先来说输出:

  7. codeforces 414A A. Mashmokh and Numbers(素数筛)

    题目链接: A. Mashmokh and Numbers time limit per test 1 second memory limit per test 256 megabytes input ...

  8. wireshark分析ssl协议

    1.什么是ssl SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种 ...

  9. Xcode6.3真机测试无法选择目标机器问题

    Xcode刚刚升级到了6.3版本,但是真机测试出现了一点问题.对于某些手机无法选中,如下: 上图中的“xxoo的iPhone”无法选中,不过这个问题在stackoverflow中有解答,可以通过其他手 ...

  10. 「LuoguP1238」 走迷宫

    Description 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个数据来描 ...