低头凝望镜中月

不如关注木丘白

一步两步向前走

共同学习一起来

前言

今天来分享一下压力测试的工具Apache Bench,标题中提到的ab就是他的简称,是Apache服务器自带的一个web压力测试工具,当我们的业务逐渐扩展服务器性能必然会成为瓶颈,所以我们不得不关注性能测试,接下来就走进ab,来一场压力测试之旅吧。

概念

首先我们来了解几个压力测试相关的概念,更有助于在实际工作中理解并得以应用。

①吞吐率(RPS: Requests per second)
概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests

TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)

QPS:每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

②并发连接数(The number of concurrent connections)
概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

③并发用户数(The number of concurrent users,Concurrency Level)
概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。

④用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)

⑤服务器平均请求等待时间(Time per request: across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level

ab安装

//使用yum安装yum -y install httpd-tools

//查看版本ab -VThis is ApacheBench, Version 2.3 1430300 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/
//查看参数及说明ab -h
-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特性。-d  不显示百分比。-S  不显示预估和警告信息。-g  输出结果信息到gnuplot格式的文件中。-e  输出结果信息到CSV格式的文件中。-r  指定接收到错误信息时不退出程序。-h  显示用法信息,其实就是ab -help。

ab使用

上面提到的参数很多,一般我们就用-n 和 -c就可以了,下面以测试百度的为例

ab -n 100 -c 10 http://www.baidu.com/

针对上图解释

Server Software表示被测试的Web服务器软件名称。

Server Hostname表示请求的URL主机名。

Server Port表示被测试的Web服务器软件的监听端口。

Document Path表示请求的URL中的根绝对路径,通过该文件的后缀名,我们一般可以了解该请求的类型。

Document Length表示HTTP响应数据的正文长度。

Concurrency Level表示并发用户数,这是我们设置的参数之一。

Time taken for tests表示所有这些请求被处理完成所花费的总时间。

Complete requests表示总请求数量,这是我们设置的参数之一。

Failed requests表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况。如果接收到的HTTP响应数据的头信息中含有2XX以外的状态码,则会在测试结果中显示另一个名为“Non-2xx responses”的统计项,用于统计这部分请求数,这些请求并不算在失败的请求中。

Total transferred表示所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,仅仅为web服务器流向用户PC的应用层数据总长度。

HTML transferred表示所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度。

Requests per second吞吐率,计算公式:Complete requests/Time taken for tests

Time per request用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。

Time per requet(across all concurrent request)服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level。

Transfer rate表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。

Percentage of requests served within a certain time(ms)这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过6ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。

end

旅程结束,快去试试吧,更多分享内容记得关注我哦

点在看~

捧个人场就行~

ab压力测试_使用ab来一次压力测试之旅相关推荐

  1. java 压力测试_使用 JMeter 完成常用的压力测试

    讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试.但是软件仅仅只是功能正确是不够的.在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度.影响软件响应速度的 ...

  2. jmeter压力测试_用Jmeter实现对接口的压力测试

    一.多个真实用户对接口的压力测试 1. 获取多个真实用户的token的两种方法: 1)第一种:让开发帮忙生成多个token(多个用户账户生成的token),导出为csv格式的文件(以下步骤均以该方法为 ...

  3. ab压力测试_CentOS安装压力测试工具ApacheBench(ab)

    官方文档: https://httpd.apache.org/docs/2.4/programs/ab.html ab原理: ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访 ...

  4. 简单好用的服务器压力测试小工具 ab

    2019独角兽企业重金招聘Python工程师标准>>> 前段时间,创建了一个小接口,用来测试阿里云的一个表格存储的IO能力,就用到了一个压测小工具,叫ab(apachebeach), ...

  5. ab测试工具 linux,超实用压力测试工具-ab工具

    写在前面 在学习ab工具之前,我们需了解几个关于压力测试的概念吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内 ...

  6. [收藏]超实用压力测试工具-ab工具

    本文转载自:https://www.jianshu.com/p/43d04d8baaf7 写在前面 在学习ab工具之前,我们需了解几个关于压力测试的概念 吞吐率(Requests per second ...

  7. 压力测试工具-ab工具

    写在前面 在学习ab工具之前,我们需了解几个关于压力测试的概念 吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间 ...

  8. 压力测试ab安装 linux,Centos8下安装ab压力测试工具及ab命令详解

    释放双眼,带上耳机,听听看~! 1.ab的简介 ab是apachebench命令的缩写. ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以 ...

  9. html5 并发测试工具,超实用压力测试工具-ab工具

    吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数.某个并发用户数下单位时间内能处理的最大请求数,称 ...

  10. php mysql 压力测试_MySQL的性能基线收集及压力测试

    建立基线的作用: 计算机科学中,基线是项目储存库中每个工件版本在特定时期的一个"快照". 比如我们现在有并发事物,那么在某时刻发起一个事物会产生当前数据的快照,那么这个快照就相当理 ...

最新文章

  1. 知乎13万赞!为何很多名校毕业生,都输在了人生后半程
  2. java dagger2_java – Dagger2不生成Daggercomponent类
  3. ON、WHERE、HAVING的区别
  4. sudo运行程序遇到的问题
  5. 【必看】小公司如何做网络规划
  6. 01-JVM与Java体系结构
  7. 基于Xml 的IOC 容器-解析配置文件路径
  8. datax mysql replace_DataX-MySQL(读写)
  9. gitbook新版本 build命令导出的html不能跳转?
  10. php 编写mysql,自己写的MySQL类
  11. c/s 给 服务器上传文件(c/s和b/s互传文件)
  12. boost::any 万能容器_万能的小苏打,太棒了
  13. mysql连接报错3167_MySQL之使用过程中报错及处理记录(持续更新)
  14. MySQL错误ERROR 1786 (HY000)解决
  15. 如何在VUE项目中使用前端数据库WebSQL
  16. 手机连接投影机的步骤_投影仪手机投屏怎么弄(投影仪连接手机方法介绍)
  17. 在计算机上最常用的英语单词,计算机常用英语单词
  18. ffmpeg批量合并ts文件为一个视频
  19. Node.js 种子下载器
  20. 网络信息安全 一场没有硝烟的战争

热门文章

  1. 为什么要有环回路由(zz)
  2. SPI机制入门、SPI机制原理
  3. 线程基础阶段性总结和扩展(二)——ThreadLock
  4. 在Spring IoC中,依赖注入和依赖查找的数据来源区别
  5. 数据库索引失效的一些场景
  6. SpaceEmacs Rock Day2 学习笔记
  7. mongodb mapredReduce 多个条件分组(group by)
  8. systemd (简体中文)
  9. 在Linux环境下select函数的初体验
  10. 基础数据结构-线性表-顺序表的连续操作