Apache自带的ab压力测试工具的实现


Posted in Servers onJuly 23, 2022

Apache Bench 简介

Apache Bench 是 Apache 服务器自带的一个web压力测试工具,简称 ab 。

ab 非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等

ab的原理

ab的原理:ab命令会创建 多个并发 访问线程,模拟 多个访问者 同时对某一 URL地址 进行访问。

它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab是一个命令行工具, ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。

对于想快速进行压力测试的同学来说,apache ab是一个简单好用的工具,下面简单介绍一下它的使用方法。

官网: https://httpd.apache.org/docs/2.0/programs/ab.html

ab的安装

# 安装
#yum -y install httpd-tools
apt-get install apache2-utils
# 检查是否成功
ab -v

参数介绍

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

下面是参数

-n requests Number of requests to perform             //本次测试发起的总请求数
-c concurrency Number of multiple requests to make   //一次产生的请求数(或并发数)
-t timelimit Seconds to max. wait for responses    //测试所进行的最大秒数,默认没有时间限制。
-r Don't exit on socket receive errors.              // 抛出异常继续执行测试任务 
-p postfile File containing data to POST      //包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt

-T content-type Content-type header for POSTing
// POST 数据所使用的 Content-type 头信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p)

-v verbosity How much troubleshooting info to print
//设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。

-C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3” (repeatable)

//-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复,用逗号分割。
提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。

-w Print out results in HTML tables  //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i Use HEAD instead of GET

ab测试案例

ab -n 5000 -c 200 http://localhost/index.php
ab -n 1000 -c 100 -w http://localhost/index.php >>d:miss.html
ab -n 1000 -c 100 -p request_json.txt -T 'application/json' 'http://192.168.0.101:8088/api/event/annotationEvent'

示例2

参数很多,一般我们用 -n 和 -c 参数就可以了。例如:

abs.exe -n 100  -c 20  测试网址
  • -n 后面的100,表示总共发出100 个请求;
  • -c 后面的20 ,表示采用20 个并发(模拟 20 个人同时访问),

后面的网址表示测试的目标URL。

对百度进行简单的压力测试: abs.exe -n 100 -c 20 https://www.baidu.com/

运行结果:

Apache自带的ab压力测试工具的实现

  • Document Path:测试页面
  • Document Length: 页面大小
  • Concurrency Level: 测试的并发数
  • Time taken for tests:整个测试持续的时间
  • Complete requests:完成的请求数量
  • Failed requests: 失败的请求数量
  • Total transferred: 整个过程中的网络传输量
  • HTML transferred: 整个过程中的HTML内容传输量
  • Requests per second: 最重要的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值
  • Time per request: 最重要的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值
  • Time per request: 每个连接请求实际运行时间的平均值
  • Transfer rate: 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

到此这篇关于Apache自带的ab压力测试工具的实现的文章就介绍到这了,更多相关Apache ab压力测试工具内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Servers 相关文章推荐
nginx 反向代理之 proxy_pass的实现
Mar 31 Servers
制作能在nginx和IIS中使用的ssl证书
Jun 21 Servers
总结高并发下Nginx性能如何优化
Nov 01 Servers
Nginx内网单机反向代理的实现
Nov 07 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
Tomcat配置访问日志和线程数
May 06 Servers
排查Tomcat进程假死的问题
May 06 Servers
WinServer2012搭建DNS服务器的方法步骤
Jun 10 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
Nginx安装配置详解
Jun 25 Servers
Apache自带的ab压力测试工具的实现
Jul 23 Servers
源码安装apache脚本部署过程详解
Sep 23 Servers
apache虚拟主机配置的三种方式(小结)
Jul 23 #Servers
django项目、vue项目部署云服务器的详细过程
Jul 23 #Servers
Nginx报错104:Connection reset by peer问题的解决及分析
Jul 23 #Servers
centos环境下nginx高可用集群的搭建指南
Nginx如何配置根据路径转发详解
Jul 23 #Servers
Linux中一对多配置日志服务器的详细步骤
Jul 23 #Servers
Nginx如何限制IP访问只允许特定域名访问
Jul 23 #Servers
You might like
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python实现图片尺寸缩放脚本
2018/03/10 Python
Python闭包思想与用法浅析
2018/12/27 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
优秀大学生求职自荐信范文
2014/04/19 职场文书
食品安全宣传标语
2014/06/07 职场文书
购房委托书
2014/10/15 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
2015年派出所工作总结
2015/04/24 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
python 镜像环境搭建总结
2022/09/23 Python