CDN加速

文档中心 云服务器 常见问题 Linux操作运维类 1. 使用Apachebench进行网站性能压测

1. 使用Apachebench进行网站性能压测

更新时间:2021-02-22 17:23:42

网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。
性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege。本文介绍来ab的使用。
ab全名Apachebench,是Apache自带的压力测试工具。ab非常实用,它不仅可以对Apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如Nginx、Tomcat、IIS等。

ab的原理

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

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

ab的安装

ab的安装非常简单。安装完毕Apache后ab命令存放在Apache安装目录的bin目录下。下载链接如下:https://www.apachelounge.com/download/
网宿亮相亚马逊云峰会:解读如何构建安全可靠的云基础架构

根据电脑系统位数选择对应的软件下载。下载后复制到你想放到的目录下,本教程是放在此目录下:
网宿亮相亚马逊云峰会:解读如何构建安全可靠的云基础架构
进入httpd-2.4.37-win32-VC15\Apache24\bin可以看到有个可执行文件 ab.exe
网宿亮相亚马逊云峰会:解读如何构建安全可靠的云基础架构

使用

  1. 记住上面ab.exe所在目录的全路径:C:\Program Files (x86)\Apache\httpd-2.4.37-win32-VC15\Apache24\bin

  2. Win+R 输入 cmd 进入电脑命令行下。
    网宿亮相亚马逊云峰会:解读如何构建安全可靠的云基础架构

  3. 在命令行下进入上面 ab.exe 所在的目录中。
    网宿亮相亚马逊云峰会:解读如何构建安全可靠的云基础架构

  4. 可以使用ab.exe命令了。比如这里使用ab.exe -n 100 -c 50 http://www.baidu.com.cn/(-n 100 表示共发出100个请求,-c 50模拟50并发,相当50人同时访问,后面是测试的url)。

  5. 测试的结果如下。
    网宿亮相亚马逊云峰会:解读如何构建安全可靠的云基础架构

结果参数解释
Document Length: HTTP响应数据的正文长度。
Time taken for tests: 所有这些请求处理完成所花费的时间。
Complete requests: 完成请求数。
Failed requests: 失败请求数。
Total transferred: 网络总传输量。
HTML transferred: HTML内容传输量。
Requests per second: 吞吐量-平均每秒请求数。
Time per request: 服务器收到请求,响应页面要花费的时间。
Time per request: 并发的每个请求平均消耗时间。
Transfer rate: 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题。
Connection Times (ms):网络上消耗的时间的分解。

性能指标解读

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

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.exe 命令的格式为: ab.exe [options] [http://]hostname[:port]/path
ab.exe就是一个命令行工具,所以都是以参数的形式使用功能,各个参数的功能可以用 ab.exe -h 查看。
网宿亮相亚马逊云峰会:解读如何构建安全可靠的云基础架构