web简单的整体测试
网站性能压力测试是性能调优过程中必不可少的一环。只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题
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简单的整体测试的更多相关文章
- Web下的整体测试 --性能测试及优化思路
随着Internet的日益普及,现在基于B/S结构的大型应用越来越多,可如何对这些应用进行测试成为日益迫切的问题.有许多测试人员来信问我B/S的测试如何做,由于工作较繁忙,对大家提出的问题也是头痛医头 ...
- Web应用程序整体测试基础——单元测试
近年来,随着基于B/S结构的大型应用越来越多,Web应用程序测试问题也在逐步完善中.但Web应用程序测试既可以在系统开发中实施,也可以独立于系统单独完成,这取决于Web应用程序的复杂性和多样性.同时程 ...
- 如何使用 JMeter 调用你的 Restful Web Service?进行简单的压力测试和自动化测试
表述性状态传输(REST)作为对基于 SOAP 和 Web 服务描述语言(WSDL)的 Web 服务的简单替代,在 Web 开发上得到了广泛的接受.能够充分证明这点的是主流 Web 2.0 服务提供商 ...
- 九款Web服务器性能压力测试工具
一.http_load 程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会 ...
- Aurelia – 模块化,简单,可测试的 JS 框架
Aurelia 是下一代 JavaScript 客户端框架,利用简单的约定来激发你的创造力.凭借其强大的专注于开发经验, Aurelia 可以使您不仅创造惊人的应用程序,同时也享受这个过程.它经过精心 ...
- 云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
云优化的概念.Entity Framework 7.0.简单吞吐量压力测试 继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之 ...
- 安全测试 一次关于WEB的URL安全测试
一次关于WEB的URL安全测试 by:授客 QQ:1033553122 测试思路: 时间精力问题,对web安全这块也没咋深入研究,但因为某个小插曲,公司要求先做个简单的安全测试,主要是针对UR ...
- Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程
Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论 一.http_load 程序 ...
- 关于WEB的URL安全测试
测试思路: 对WEB做个简单的安全测试,主要是针对URL的测试. 回想起来,这次测试本质可以归为“权限”的测试,如下: 案例1: 1.分别开两个浏览器,以两个不同的帐号登陆web后台 2.第一个浏览器 ...
随机推荐
- quilt
1 什么是quilt quilt是一个patch管理工具,特别适合于对多个patch进行管理. quilt是基于gnu patch和diff的. 2 使用quilt创建一个patch 第一步,quil ...
- MongoDB Spark Connector
[在文件/usr/bin/yum./usr/libexec/urlgrabber-ext-down最上面的一行改为#!/usr/bin/python2.7] yum install git Note: ...
- DOM操作三
1.以一个对象的x和y属性的方式返回滚动条的偏移量 function getScrollOffsets(w){ //使用指定的窗口,如果不带参数则使用当前窗口 w= w || window; //除了 ...
- ajax异步加载问题
使用ajax异步加载数据,在之后需要用到这个数据时,应该将之后的js一并写入ajax函数中,否则后面的js不能找到动态拼接的dom节点. 或者将其封装成方法,在ajax动态加载数据的最后调用该方法.
- CentOS 7.2 安装Gerrit 2.14.6
1.环境 本文使用VMWare虚拟机进行实验. 2核CPU,4GB内存,20GB硬盘,IP:192.168.159.131 CentOS 7.2最小安装(CentOS-7-x86_64-Minimal ...
- Ext js框架模拟Windows桌面菜单管理模板
一款超炫的后台,Ext模拟Windows桌面,Ext经典浅蓝风格,功能非常强大,包括最大化.最小化.状态栏.桌面图标等,不过需要非常懂Ext脚本的才可驾驭它. 1.图片 2. [代码][HTML] ...
- CodeForces546D:Soldier and Number Game(筛区间素数因子个数和)
Two soldiers are playing a game. At the beginning first of them chooses a positive integer n and giv ...
- Flask app.config 的配置
原理如下: image.png 1.通过调用自定义config.py文件中config字典,可以得到一个类, 这个类里面定义的都是类变量,这些变量就是自定义的一些配置项. 如下config.py ...
- http基础知识摘录
HTTP是一个基于请求/响应模式的,无状态的协议 (只有客户端发送请求服务器才会响应,否则服务器不会主动发送信息的,无状态指客户端发过来一个请求服务端给你发回一个响应,接着你再去发送一个请求,服务器根 ...
- node.js适合游戏后台开发吗?
网站服务器和游戏服务器是怎么样联系到一起的? 百牛信息技术bainiu.ltd整理发布于博客园 1. 游戏分很多种,咱们先来看看MMORPG. 再怎么简单的RPG服务器都免不了处理多人交互的情形,上百 ...