你真的了解吗?学网站必备技能——ab命令

为什么要压力测试?

网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。
性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege。今天我们专门来介绍 ab。

ab的原理

ab 是 apachebench 命令的缩写。
ab 的原理:ab 命令会创建多个并发访问线程,模拟多个访问者同时对某一 URL 地址进行访问。
它的测试目标是基于 URL 的,因此,它既可以用来测试 apache 的负载压力,也可以测试 nginx、lighthttp、tomcat、IIS 等其它 Web 服务器的压力。

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

ab命令相关参数: 

-c 并发数
-n 请求次数
-H header
-p body 将body中 json 串写到 a.json 中
-T POST数据所使用的Content-type头信息

ab的安装

ab 的安装非常简单,如果是源码安装 apache 的话,那就更简单了。apache 安装完毕后 ,ab命令存放在 apache 安装目录的 bin 目录下。
如下:/usr/local/httpd/bin/ab

如果 apache 是通过 yum 的 RPM 包方式安装的话,ab 命令默认存放在/usr/bin 目录下。如下:
which ab
注意:如果不想安装 apache 但是又想使用 ab 命令的话,我们可以直接安装 apache 的工具包 httpd-tools。
如下:
yum -y install httpd-tools

ab安装完成后可以通过ab -V查看

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

如果 ab –V 命令出错,可以 exporexportLD_LIBRARY_PATH="/usr/local/openssl/lib/"就可以了。

在这里插入图片描述
安装完后测试效果如下:

[root@mysql ~]# ab -c 100 -n 10000 http://192.168.10.3/index.php
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/
 
Benchmarking 192.168.10.3 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
 
 
Server Software:        Apache/2.4.25
Server Hostname:        192.168.10.3
Server Port:            80
 
Document Path:          /index.php   #请求的资源
Document Length:        84894 bytes  #HTTP响应的正文长度
 
Concurrency Level:      100           #并发个数(并发用户数)
Time taken for tests:   28.734 seconds  #处理这些请求所用的时间
Complete requests:      10000           #完成请求数
Failed requests:        1032
   (Connect: 0, Receive: 0, Length: 1032, Exceptions: 0)
Write errors:           0
Total transferred:      850648843 bytes   #所有请求的总长度
HTML transferred:       848938843 bytes   #所有请求的响应数据中正文数据的总和,也就是减去了 Total transferred 中 HTTP 响应数据中的头信息的长度。
Requests per second:    348.02 [#/sec] (mean)  #每秒请求数
Time per request:       287.342 [ms] (mean)   #用户平均等待时间
Time per request:       2.873 [ms] (mean, across all concurrent requests)                          #服务器平均等待时间
Transfer rate:          28910.23 [Kbytes/sec] received  #表示单位时间内从服务器获取的数据长度
 
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.1      0      24
Processing:    21  286 147.0    276    3108
Waiting:       15  114 139.0     57    2916
Total:         22  287 147.0    277    3109
 
Percentage of the requests served within a certain time (ms)
  50%    277
  66%    300
  75%    318
  80%    330
  90%    368
  95%    402
  98%    450
  99%    508
 100%   3109 (longest request)
————————————————
版权声明:本文为CSDN博主「@李子矜」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43815140/article/details/105035476

具体应用可以参考博文:https://blog.csdn.net/weixin_43815140/article/details/105035476

ab性能指标

  • 吞吐率(Requests per second)

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

记住:吞吐率是基于并发用户数的。

  • 并发连接数(The number of concurrent connections)
    并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话
  • 并发用户数(Concurrency Level)
    要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数
  • 用户平均请求等待时间(Time per request)
    计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数)
  • 服务器平均请求等待时间(Time per request:across all concurrent requests)
    计算公式:处理完成所有请求数所花费的时间/总请求数,可以看到,它是吞吐率的倒数。同时,它也等于用户平均请求等待时间/并发用户数,即:Time per request/Concurrency Level
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值