前言

网站性能压力测试是服务器网站性能调优过程中必不可缺少的一,测试环境准备好了后,如何对网站做压力测试?

压力测试的工具很多,如:ab、http_load、webbench、siege、jmeter、lr、locust,本篇介绍一个轻量级的压力测试工具ab,上手非常容易。

ab(apachebench)简介

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

ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。

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

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

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

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。

但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

ab性能指标

在进行性能测试过程中有几个指标比较重要:

1.吞吐率(Requests per second)

服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。

记住:吞吐率是基于并发用户数的。这句话代表了两个含义:

  • 吞吐率和并发用户数相关
  • 不同的并发用户数下,吞吐率一般是不同的

    计算公式:总请求数/处理完成这些请求数所花费的时间,即Request per second=Complete requests/Time taken for tests

    必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。

2.并发连接数(The number of concurrent connections)

并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

3.并发用户数(Concurrency Level)

要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的,我们的并发用户数就得除以这个基数。

4.用户平均请求等待时间(Time per request)

计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:

Time per request=Time taken for tests/(Complete requests/Concurrency Level)

5.服务器平均请求等待时间(Time per request:across all concurrent requests)

计算公式:处理完成所有请求数所花费的时间/总请求数,即:

Time taken for/testsComplete requests

可以看到,它是吞吐率的倒数。同时,它也等于用户平均请求等待时间/并发用户数,即

Time per request/Concurrency Level

ab安装

centos下安装ab非常简单,直接用yum就可以安装了

yum install -y httpd-tools

[root@yoyo ~]# yum install -y httpd-tools

Dependencies Resolved

=================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================
Installing:
httpd-tools x86_64 2.4.6-88.el7.centos base 90 k
Installing for dependencies:
apr x86_64 1.4.8-3.el7_4.1 base 103 k
apr-util x86_64 1.5.2-6.el7 base 92 k Transaction Summary
=================================================================================================================================
Install 1 Package (+2 Dependent packages) Total download size: 286 k
Installed size: 584 k
Downloading packages:
(1/3): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:00
(2/3): apr-1.4.8-3.el7_4.1.x86_64.rpm | 103 kB 00:00:00
(3/3): httpd-tools-2.4.6-88.el7.centos.x86_64.rpm | 90 kB 00:00:00
---------------------------------------------------------------------------------------------------------------------------------
Total 1.0 MB/s | 286 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : apr-1.4.8-3.el7_4.1.x86_64 1/3
Installing : apr-util-1.5.2-6.el7.x86_64 2/3
Installing : httpd-tools-2.4.6-88.el7.centos.x86_64 3/3
Verifying : httpd-tools-2.4.6-88.el7.centos.x86_64 1/3
Verifying : apr-util-1.5.2-6.el7.x86_64 2/3
Verifying : apr-1.4.8-3.el7_4.1.x86_64 3/3 Installed:
httpd-tools.x86_64 0:2.4.6-88.el7.centos Dependency Installed:
apr.x86_64 0:1.4.8-3.el7_4.1 apr-util.x86_64 0:1.5.2-6.el7 Complete!

安装完成后,使用ab -V查看版本号Version 2.3

[root@yoyo sbin]# ab  -V
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

查看帮助信息,使用ab -help,其中最主要的是-c 并发数和-n 总的连接数

[root@yoyo sbin]# ab -help
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
-n requests 要执行请求总数,默认会执行一个请求
-c concurrency 一次执行多个请求的数量,也就是并发数
-t timelimit 用于基准测试的最大秒数,使用它在固定的总时间内对服务器进行基准测试。默认情况下,没有时间限制。
-s timeout 超时之前等待的最大秒数。 默认值是30秒。
-b windowsize TCP发送/接收缓冲区的大小,以字节为单位。
-B address 进行传出连接时要绑定的地址。
-p postfile 包含数据到POST的文件。 还请记住设置-T。
-u putfile 包含PUT数据的文件。 还请记住设置-T 。
-T content-type Content-type用于POST / PUT数据的内容类型内容类型标题,例如:'application/x-www-form-urlencoded' 默认是' 'text/plain'
-v verbosity verbosity 要打印多少个疑难解答信息,设置详细级别 - 4和以上打印标题信息,3和以上打印响应代码(404,200等),2和以上打印警告和信息。
-w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i 执行HEAD请求,而不是GET。
-x attributes 用作<table>的属性的字符串。 属性被插入<table here>。
-y attributes 用作<tr>的属性的字符串。
-z attributes 用作<td>的属性的字符串。
-C attribute 将cookie添加到请求。 参数通常采用名称=值对的形式。 这个字段是可重复的。
-H attribute 例如 ‘Accept-Encoding: gzip’ 插入所有普通标题行之后 -A attribute 添加基本的WWW认证,该属性是一个冒号分隔的用户名和密码,auth-username:password -P attribute 添加基本代理验证,属性是一个冒号分隔的用户名和密码,proxy-auth-username:password -X proxy:port 使用代理服务器和端口号。
-V 打印版本号并退出。
-k 使用HTTP KeepAlive功能。
-d 不要显示百分点服务表。
-S 不要显示信心估计和警告。
-q 做超过150个请求时不要显示进度。
-g filename 将收集的数据输出到gnuplot格式文件。
-e filename 输出提供百分比的CSV文件。
-r 不要退出套接字接收错误。
-h 显示使用情况信息(此消息)。
-Z ciphersuite 密码套件指定SSL / TLS密码套件(请参阅openssl密码)
-f protocol 指定SSL / TLS协议 (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

ab压测示例

请求并发数为10, 总共发100个请求,测试地址:http://47.104.x.x:81/,没测试环境的可以试试压测百度https://www.baidu.com/

ab -c 10 -n 100 http://47.104.x.x:81/

[root@yoyo sbin]# ab -c 10 -n 100 http://47.104.x.x:81/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
# -------------以上的ab相关版本信息-------------------------# Benchmarking 47.104.x.x (be patient).....done Server Software: nginx/1.12.0 # 服务器软件版本
Server Hostname: 47.104.x.x # 请求的URL
Server Port: 81 # 请求的端口号 Document Path: / # 请求的服务器的路径
Document Length: 11270 bytes # 单个请求页面长度 单位是字节 Concurrency Level: 10 # 并发数
Time taken for tests: 19.130 seconds # 总过耗时124s
Complete requests: 100 # 总请求次数
Failed requests: 0 # 失败的请求
Write errors: 0
Total transferred: 1140400 bytes # 总共传输的字节数 http头信息
HTML transferred: 1127000 bytes # 实际页面传递的字节数
Requests per second: 5.23 [#/sec] (mean) # 每秒多少个请求
Time per request: 1913.021 [ms] (mean) # 平均每个用户等待多长时间
Time per request: 191.302 [ms] (mean, across all concurrent requests) # 服务器平均用多长时间处理
Transfer rate: 58.22 [Kbytes/sec] received # 每秒获取多少数据 Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 40 197.2 0 1002
Processing: 2 1824 1687.0 1426 10556
Waiting: 1 813 1199.9 438 8754
Total: 2 1864 1679.4 1429 10556 Percentage of the requests served within a certain time (ms)
50% 1429 # 50%的用户的请求 1429ms内返回
66% 2035
75% 2493
80% 2845
90% 3449
95% 5174
98% 7855
99% 10556
100% 10556 (longest request)

注意,一般测试环境服务器,和压力测试ab的服务器不要用同一个,要不然对整个结果会有影响

交流QQ群:779429633

Linux学习13-CentOS安装ab做压力测试的更多相关文章

  1. 在linux中给你的应用做压力测试

    在linux中给你的应用做压力测试 作者: 立地 邮箱: jarvin_g@126.com QQ: 511363759 一.webbench 1.在Ubuntu中安装webbench —支持get,h ...

  2. centos8平台使用ab做压力测试

    一,安装ab [root@blog ~]# yum install httpd-tools 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/archi ...

  3. ubuntu下 使用AB做压力测试

    1最近刚开始接触apache大数据下数据优化,讲一下apache 下ab压力测试工具. 程序“ab”尚未安装. 您可以使用以下命令安装: apt-get install apache2-utils 以 ...

  4. ab做压力测试

    ab是apache 自带的一个压力测试的小工具,可用于接口简单的压力测试. 以下是AB的简要介绍 格式:ab [options] [http://]hostname[:port]/path 参数说明: ...

  5. Linux学习(一)------CentOs安装mysql5.5 数据库

    具体方法和步骤如下所示: 1.第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了mysql5.1,那就开始卸载咯 2.接下来就是卸载mysql ...

  6. 使用Apache Benchmark做压力测试遇上的5个常见问题

    这一篇文章主要记录我在使用Apache Benchmark(一下检测ab)做网站压力测试的过程中,遇到的一些问题以及解决办法,方便日后使用. 这一篇文章主要记录我在使用Apache Benchmark ...

  7. [转] Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置

    from:  http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得 ...

  8. Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置

    原文:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j ...

  9. Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置(转)

    原文地址:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建 ...

随机推荐

  1. (三)发布Dubbo服务

    我们现在来学习下发布Dubbo服务,主要参考dubbo开发包里的demo源码:由浅入深的讲解下这个小demo: github地址:https://github.com/apache/incubator ...

  2. ***PHP 遍历数组的方法foreach

    foreach  http://php.net/manual/zh/control-structures.foreach.php (PHP 4, PHP 5) foreach 语法结构提供了遍历数组的 ...

  3. 设置idealUI选中变量的颜色与同名称变量的颜色一致

  4. js单元测试框架

    js单元测试框架 前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试 ...

  5. windows下解决PyCharm控制台中文输出乱码

    我用的PyCharm是2018.2版本 在调用os.system()的过程中遇到了控制台中文乱码的问题,具体如下 网上说的将两个Encoding格式都设置为UTF-8并没有解决问题,后来我将Proje ...

  6. DFT,DTFT,DFS,FFT区别

        学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一 ...

  7. 【Ray Tracing in One Weekend 超详解】 光线追踪1-4

    我们上一篇写了Chapter5 的第一个部分表面法线,那么我们来学剩下的部分,以及Chapter6. Chapter5:Surface normals and multiple objects. 我们 ...

  8. tornado登陆装饰器

    tornado作为鼎鼎大名的web异步框架,用来作为高性能服务器以及web框架都是首选.自从python3.4加入了asyncio原生协程后,tornado的最新版本也开始使用了原生的协程.定义协程函 ...

  9. UE4新手编程之创建空白关卡和添加碰撞体

    让我们接着上次继续学习UE4引擎,今天我们学习下怎样创建空白的关卡以及添加碰撞物体. 一. 创建空白关卡 1) 点击文件 -> 新建关卡(或者按快捷键Ctrl+N). 2) 你可以选择Defau ...

  10. [POI2013]Polaryzacja

    [POI2013]Polaryzacja 题目大意: 给定一棵\(n(n\le250000)\)个点的树,可以对每条边定向成一个有向图,这张有向图的可达点对数为树上有路径从\(u\)到达\(v\)的点 ...