一.简介

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的更多相关文章

  1. 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)

    作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...

  2. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

  3. php性能优化(一)压力測试工具篇

    ab使用 Apache附带的压力測试工具ab,很easy使用,而且全然能够摸你各种条件对Webserver发起測试请求.ab能够直接在Webserver本地发起測试请求.这对于须要了解server的处 ...

  4. UnityTestTools測试工具

    由于工作关系,要了解Unity上的測试工具,该工具基于Nunit框架.通过查阅资料了解到在Unity5.3中做出了一些改变,自带的仅仅剩下单元測试工具,假设想用其它的工具比方断言.集成測试,就须要前往 ...

  5. ubuntu 14.04 LTS 安装webbentch压力測试工具

    近期在做 压力測试工具,除了apache的ab測试工具外,发现webbentch工具也不错,这里简介下这两个工具. 一.webbentch安装: wget http://blog.s135.com/s ...

  6. MySQL Study之--MySQL压力測试工具mysqlslap

    MySQL Study之--MySQL压力測试工具mysqlslap 一.Mysqlslap介绍     mysqlslap是MySQL5.1之后自带的benchmark基准測试工具,类似Apache ...

  7. Android性能測试 一些适用于Android Studio的代码审查和性能測试工具

    导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...

  8. Java单元測试工具JUnit 5新特性一览

    Java单元測试工具JUnit 5新特性一览 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JUnit是最流行的开源 ...

  9. webbench压力測试工具

    apache的測试工具ab 在并发100个以上后会出现错误.网上也有非常多改ab源代码来解禁的. 只是还是推荐一款比較好用的压力測试工具webbench wget http://blog.zyan.c ...

随机推荐

  1. requests之代理的使用

    import requests # 访问url url = 'http://www.baidu.com/s?' # 请求头 headers = { 'User-Agent': 'Mozilla/5.0 ...

  2. Python爬虫中的URLError\HTTPError异常类,异常的抛出

    # _*_ coding : utf-8 _*_# @Time : 2021/11/2 14:20# @Author : 秋泊酱 import urllib.request import urllib ...

  3. 躺平吧,平铺的窗口「GitHub 热点速览 v.21.47」

    作者:HelloGitHub-小鱼干 用 macOS 系统经常会遇到的一个问题便是多开窗口如何快速找寻的问题,本周特推项目 yabai 便是来解决这个问题的.直接把所有窗口平铺,是不是很"正 ...

  4. [loj3069]整点计数

    1.基础知识 定义 定义1.1(高斯整数):$\mathbb{Z}[i]=\{a+bi\mid a,b\in Z\}$(其中$i$为虚数单位,即$i^{2}=-1$) 定义1.2(范数):$N(\al ...

  5. watch异步操作

    异步操作: 1.ajax, 2.定时器 3.点击事件 4.数据库操作 特点:代码不等待,后续代码会继续执行. watch:{ //watch作用监测已经存在的数据 newVal 新值,oldVal 旧 ...

  6. jQuery源码中的赌博网站

    前言 jQuery源码中有赌博网站? 起因是公司发的一份自查文件,某银行在日常安全运营过程中发现在部分jQuery源码中存在赌博和黄色网站链接. 链接分为好几个: www.cactussoft.cn ...

  7. CF1368F Lamps on a Circle

    思考我们一定有最后一个状态是空着的灯是按照一个间隔\(k\) 只要将原来\(n\)个灯,每\(k\)个分一组,强制将最后一盏灯不选,并且第n盏灯不选,需要注意的是某一组一定会被第二个人全部关掉,那么可 ...

  8. 洛谷 P3676 - 小清新数据结构题(动态点分治)

    洛谷题面传送门 题目名称好评(实在是太清新了呢) 首先考虑探究这个"换根操作"有什么性质.我们考虑在换根前后虽然每个点的子树会变,但整棵树的形态不会边,换句话说,割掉每条边后,得到 ...

  9. Codeforces 1340F - Nastya and CBS(分块+哈希)

    Codeforces 题面传送门 & 洛谷题面传送门 首先看到这样的数据范围我们可以考虑分块,具体来说,对于每一块我们记录其中的括号是否能完全消掉,以及对其进行括号相消之后的括号序列(显然是一 ...

  10. Atcoder Grand Contest 008 E - Next or Nextnext(乱搞+找性质)

    Atcoder 题面传送门 & 洛谷题面传送门 震惊,我竟然能独立切掉 AGC E 难度的思维题! hb:nb tea 一道 感觉此题就是找性质,找性质,再找性质( 首先看到排列有关的问题,我 ...