前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux学习11-CentOS安装ab做压力测试

Linux学习11-CentOS安装ab做压力测试

作者头像
上海-悠悠
发布2019-05-06 15:11:45
2K0
发布2019-05-06 15:11:45
举报

前言

网站性能压力测试是服务器网站性能调优过程中必不可缺少的一,测试环境准备好了后,如何对网站做压力测试? 压力测试的工具很多,如: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

代码语言:javascript
复制
[root@yoyo ~]# yum install -y httpd-toolsDependencies 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 kTransaction 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/3Installed:
 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

代码语言:javascript
复制
[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 总的连接数

代码语言:javascript
复制
[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/

代码语言:javascript
复制
[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).....doneServer 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       10556Percentage 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的服务器不要用同一个,要不然对整个结果会有影响

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ab(apachebench)简介
  • ab性能指标
  • ab安装
  • ab压测示例
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档