试工具_ab
一.简介
ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的。
1.ab每次只能测试一个URL,适合做重复压力测试
2.参数很多,可以支持添加cookie,启用keeplive
3.可以将测试结果导入文件
4.设置显示信息的详细程度
综合来说,适合单个URL的测试,可以支持更多方式去测试,比如使用cookie模仿用户提交表单来测试数据库,但ab是单线程的,不适合测性能高的服务器
二.例子
需要安装httpd-tools
yum -y install httpd-tools
-c指定1000并发,-n指定总10000次,相当于1000个人访问10次。
ab -c 1000 -n 10000 http://192.168.2.38/
Server Software: nginx/1.8.1 #服务器信息和版本
Server Hostname: 192.168.2.38 #服务器的域名
Server Port: 80 #端口
Document Path: / #访问的路径
Document Length: 612 bytes #文档的大小为 612 bytes(此为http响应的正文长度)
Concurrency Level: 1000 #并发请求数
Time taken for tests: 0.287 seconds #整个测试持续的时间,默认秒
Complete requests: 1000 #完成的请求数
Failed requests: 0 #失败的请求书
Write errors: 0 #网络连接写入错误数
Total transferred: 844000 bytes #传输的总数据量
HTML transferred: 612000 bytes #传输的HTML内容传输量
Requests per second: 3485.11 [#/sec] (mean) #平均每秒请求数
Time per request: 286.935 [ms] (mean) #所有用户都请求一次的平均时间
Time per request: 0.287 [ms] (mean, across all concurrent requests) #单个用户请求一次的时间
Transfer rate: 2872.49 [Kbytes/sec] received #传输速率
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 84 4.1 84 94
Processing: 86 99 6.6 100 109
Waiting: 0 83 16.2 84 108
Total: 95 183 7.4 182 195
#所有服务请求的百分比占用时间,这里50%的请求用时182ms,一般看90%的部分
Percentage of the requests served within a certain time (ms)
50% 182
66% 188
75% 191
80% 192
90% 193
95% 194
98% 194
99% 194
100% 195 (longest request)
接下来是每秒访问,因为ab不支持设定每秒访问多少,所以写一个脚本
#!/bin/bash
#当下是运行60秒,每秒1000并发,可以观察服务器负载
for i in `seq 1 60`
do
ab -c 1000 -n 1000 http://192.168.2.38/ &
sleep 1
done
三.参数
1.使用cookie来模拟多个用户访问
先用账户和密码登录后,用开发者工具找到标识这个会话的Cookie值(Session ID)记下来
一个
ab -n 100 -C key=value http://test.com/
多个账号
ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/
具体参数
-n 即requests,用于指定压力测试总共的执行次数。
-c 即concurrency,用于指定压力测试的并发数。
-t 即timelimit,等待响应的最大时间(单位:秒)。
-b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p 即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u 即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T 即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form
-urlencoded,默认值为text/plain。
-v 即verbosity,指定打印帮助信息的冗余级别。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
-H 添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X 指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。
-V 打印版本号并退出。
-k 使用HTTP的KeepAlive特性。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-g 输出结果信息到gnuplot格式的文件中。
-e 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-h 显示用法信息,其实就是ab -help。
试工具_ab的更多相关文章
- 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)
作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...
- Linux 性能測试工具
Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...
- php性能优化(一)压力測试工具篇
ab使用 Apache附带的压力測试工具ab,很easy使用,而且全然能够摸你各种条件对Webserver发起測试请求.ab能够直接在Webserver本地发起測试请求.这对于须要了解server的处 ...
- UnityTestTools測试工具
由于工作关系,要了解Unity上的測试工具,该工具基于Nunit框架.通过查阅资料了解到在Unity5.3中做出了一些改变,自带的仅仅剩下单元測试工具,假设想用其它的工具比方断言.集成測试,就须要前往 ...
- ubuntu 14.04 LTS 安装webbentch压力測试工具
近期在做 压力測试工具,除了apache的ab測试工具外,发现webbentch工具也不错,这里简介下这两个工具. 一.webbentch安装: wget http://blog.s135.com/s ...
- MySQL Study之--MySQL压力測试工具mysqlslap
MySQL Study之--MySQL压力測试工具mysqlslap 一.Mysqlslap介绍 mysqlslap是MySQL5.1之后自带的benchmark基准測试工具,类似Apache ...
- Android性能測试 一些适用于Android Studio的代码审查和性能測试工具
导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...
- Java单元測试工具JUnit 5新特性一览
Java单元測试工具JUnit 5新特性一览 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JUnit是最流行的开源 ...
- webbench压力測试工具
apache的測试工具ab 在并发100个以上后会出现错误.网上也有非常多改ab源代码来解禁的. 只是还是推荐一款比較好用的压力測试工具webbench wget http://blog.zyan.c ...
随机推荐
- 1组-Alpha冲刺-4/6
一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15553196.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...
- dart系列之:dart类中的泛型
目录 简介 为什么要用泛型 怎么使用泛型 类型擦除 泛型的继承 泛型方法 总结 简介 熟悉JAVA的朋友可能知道,JAVA在8中引入了泛型的概念.什么是泛型呢?泛型就是一种通用的类型格式,一般用在集合 ...
- [hdu7034]Array
令$f(a)_{i}=\min_{i<j\le n,a_{i}=a_{j}}j$(特别的,若不存在$j$则令$f(a)_{i}=n+1$),则有以下性质: 1.对于$b_{i}$ ...
- [bzoj1046]上升序列
以i为开头的最长上升子序列,那么就是反过来以i为结尾的最长下降子序列,预处理出来后,不断向后找到下一个数即可 1 #include<bits/stdc++.h> 2 using names ...
- 宝藏好物gRPCurl
宝物简介 grpcur是一个与grpc服务器交互的命令行工具,可认为是gRPC的curl工具. grpcurl用于从命令行调用gRPC服务器支持的RPC方法,gRPC使用二进制编码(protobuf) ...
- js数组常用添加方法有两种
//头部 //this.list.unshift({name:this.itemName,date:new Date()}); //尾部 this.list.p ...
- 洛谷 P3711 - 仓鼠的数学题(多项式)
洛谷题面传送门 提供一种不太一样的做法. 假设要求的多项式为 \(f(x)\).我们考察 \(f(x)-f(x-1)\),不难发现其等于 \(\sum\limits_{i=0}^na_ix^i\) 考 ...
- 洛谷 P3643 - [APIO2016]划艇(dp)
题面传送门 一道难度中等的 \(dp\)(虽然我没有想出来/kk). 首先一眼 \(dp_{i,j}\) 表示考虑到第 \(i\) 个学校,第 \(i\) 个学校派出了 \(j\) 个划艇的方案数,转 ...
- Godunov's 定理
Godunov's theorem 转自Wiki 目录 Godunov's theorem 简介 定理 定理1. 单调保持性(Monotonicity preserving) 定理2. Godunov ...
- python20判断变量是否存在
python中检测某个变量是否有定义 第一种方法使用内置函数locals(): locals():获取已定义对象字典 'testvar' in locals().keys() 第二种方法使用内置函数d ...