烂泥:apache性能测试工具ab的应用

烂泥:apache性能测试工具ab的应用,第1张

烂泥:apache性能测试工具ab的应用

这篇文章最初发表在mud上。

网站性能压力测试是服务器网站性能调优过程中不可或缺的环节。只有在服务器处于高压状态下,软件、硬件等设置不当暴露出来的问题才能得到解决。得到真实的反映。

目前最常见的性能测试工具有:ab、http_load、webbench、围攻。今天我们专门介绍ab。

Ab是apache自己的压力测试工具。Ab很实用。它不仅可以测试apache服务器的压力,还可以测试其他类型的服务器。如nginx、tomcat、IIS等。

让我们开始介绍ab命令的用法:

1、ab原理

2.ab的安装

3.ab参数的描述

4.ab性能指数

5.ab其实是用的

6.测试nginx的性能

一、ab原则

Ab是apachebench命令的缩写。

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

ab命令对发出负载的计算机要求很低,既不会占用很高的CPU,也不会占用很多内存。但是会对目标服务器造成巨大的负载,原理类似于CC***。你也要注意自己的测试和使用,不然一时间超负荷。这可能会导致目标服务器耗尽资源,甚至在严重的情况下崩溃。

二。安装ab

ab的安装非常简单。如果apache安装了源代码,那就更简单了。apache安装后,ab命令存储在apache安装目录的bin目录中。如下所示:

/usr/local/apache2/bin

如果apache是通过yum的RPM包安装的,那么ab命令默认存储在/usr/bin目录中。如下所示:

哪个ab

注意:如果不想安装apache但是想使用ab命令,我们可以直接安装apache的工具包httpd-tools。如下所示:

yum-y安装httpd-工具

检查ab是否安装成功。您可以切换到上述目录,并使用AB–V命令进行检测。如下所示:

缬沙坦组

如果ab安装成功,ab–V命令将显示AB的欢迎版本,如上图所示。

注意,以上是安装在linux平台下的。如果是在windows平台下,我们也可以下载相应的apache版本进行安装。

目前apache的最新版本是2.4.10,apache官网没有windows下载的版本。但是我们可以下载apache官网提供的集成包,如下:

三。ab参数的解释

对于ab命令的使用,我们可以通过help命令来查看。如下所示:

ab-帮助

下面我们来解释一下这些参数。如下所示:

-n测试会话中执行的请求数。默认情况下,只执行一个请求。

-c一次生成的请求数。默认是一次一个。

-t测试将花费的最大秒数。它的内部隐含值是-n50000,可以将服务器的测试限制在一个固定的总时间内。默认情况下,没有时间限制。

-p包含需要发布的数据的文件。

-P向转接代理提供基本认证信任。用户名和密码由a:分隔,并以base64编码的形式发送。无论服务器是否需要,都会发送这个字符串(即是否发送401认证需求代码)。

-t发布数据使用的内容类型头信息。

-v设置显示信息的详细程度-值为4或更大将显示标题信息,值为3或更大将显示响应代码(404、200等。),大于或等于2的值将显示警告和其他信息。

-V显示版本号并退出。

-w以HTML表格的格式输出结果。默认情况下,它是一个白色背景的两列宽的表格。

-我执行HEAD请求而不是GET。

-x设置

-X对请求使用代理服务器

-y设置

-z设置

-C将Cookie附加到request:行。其典型形式是name=value的参数对,可以重复。

-H在请求中附加额外的标头信息。该参数的典型形式是一个有效的标题信息行,它包含由冒号分隔的字段和值对(例如,“Accept-Encoding:zip/zop;8位”).

-A向服务器提供基本的身份验证信任。用户名和密码由a:分隔,并以base64编码的形式发送。无论服务器是否需要,都会发送这个字符串(即是否发送401认证需求代码)。

-h展示如何使用它。

-d不显示消息“xx[ms]表内的服务百分比”(支持以前的版本)。

-e生成一个逗号分隔(CSV)文件,其中包含处理每个相应百分比的请求所需的相应时间百分比(以精细单位表示)(从1%到100%)。由于这种格式已经被“二进制化”,它比“gnuplot”格式更有用。

-g将所有测试结果写入“gnuplot”或TSV(制表符分隔)文件。这个文件可以很容易的导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。第一行标题。

-我执行HEAD请求而不是GET。

-k启用HTTPKeepAlive功能,即在一个HTTP会话中执行多个请求。默认情况下,不启用KeepAlive。

-q如果处理的请求数大于150,ab将在每次处理大约10%或100个请求时在stderr中输出一个进度计数。这个-q标志可以抑制这个信息。

四。ab性能指数

在性能测试过程中,有几个指标很重要:

1.吞吐率(每秒请求数)

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

记住:吞吐率是基于并发用户的数量。这句话代表了两层意思:

a、吞吐率与并发用户数有关。

b、不同并发用户数下吞吐率一般不一样。

计算公式:请求总数/完成这些请求所需的时间,即

每秒请求数=完成请求数/测试时间

必须注意,该值代表当前机器的整体性能。数值越大越好。

2.并发连接数

并发连接数是指服务器在某一时刻接受的请求数。简单来说就是一个会话。

3.并发用户数量(并发级别)

注意这个概念和并发连接数的区别。一个用户可能同时有多个会话,也就是连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持六个并发连接,FireFox3支持四个并发连接,那么相应的,我们的并发用户数也要除以这个基数。

4.用户的平均请求等待时间(每个请求的时间)

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

每个请求的时间=测试花费的时间/(完成的请求/并发级别)

5.平均服务器等待时间(每个请求的时间:跨所有并发请求)

计算公式:处理所有请求所用的时间/请求总数,即:

/tests完成请求所用的时间

如您所见,它是吞吐率的倒数。

同时,它也等于平均用户等待时间/并发用户数,即

每个请求的时间/并发级别

五.ab的实际使用情况

Ab有很多命令参数,我们经常使用-c和-n参数。

让我们实际执行以下 *** 作。首先,创建一个新的虚拟主机a.ilanni.com。如下所示:

cat/etc/httpd/conf/httpd.conf|grep-v^#|grep-v^$

mkdir-p/www/a.ilanni.com

回声'<?PHPphpinfo();?>'>/www/a.ilanni.com/index.php

cat/www/a.ilanni.com/index.php

创建虚拟主机后,让我们启动apache并访问虚拟主机a.ilanni.com。如下所示:

wgethttp://a.ilanni.com

创建虚拟主机a.ilanni.com之后,现在让我们测试apache的性能。使用以下命令:

http://a.ilanni.com/index.phpab-c10-n100

-c10表示并发用户数为10。

-n100表示请求总数为100。

指示http://a.ilanni.com/index.php请求的目标URL

这一行表示同时处理100个请求,index.php文件运行10次。

通过上图,测试结果也是一目了然。apache测试的吞吐率为:每秒请求数:204.89[#/秒](平均值)。

此外,还有一些其他信息需要说明,如下:

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

服务器主机名表示请求的URL主机名。

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

Path表示请求的URL中的根绝对路径。通过文件的扩展名,我们可以大致知道请求的类型。

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

并发级别表示并发用户的数量,这是我们设置的参数之一。

测试所用时间表示处理和完成所有这些请求所用的总时间。

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

Failedrequests表示失败的请求数。这里的失败指的是连接服务器、发送数据等请求的异常。,无响应后超时。如果接收到的HTTP响应数据的头信息包含除2xx之外的状态代码,测试结果中将显示另一个名为“非2XX响应”的统计项,以统计这些请求的数量,这些请求不计入失败的请求中。

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

HTMLtransferred表示所有请求的响应数据中的主体数据的总和,也就是总传输量中减去HTTP响应数据中的头信息的长度。

每秒请求吞吐率的计算公式为:完成请求/测试所用时间。

每个请求用户的平均请求等待时间,计算公式为:Timetokenfortests/(completerequests/并发级别)。

每个请求(跨所有并发请求)服务器的平均请求等待时间,通过以下公式计算:测试/完成请求所用的时间,正好是吞吐率的倒数。也可以这样算:每次请求的时间/并发级别。

传输速率表示单位时间内从服务器获取这些请求的数据长度,计算公式为:总传输时间/测试时间。该统计数据显示了当服务器的处理能力达到极限时对出口宽带的需求。

在特定时间(毫秒)内处理的请求的百分比这部分数据用于描述每个请求的处理时间的分布。例如,在上面的测试中,80%的请求处理时间不超过6毫秒。这个处理时间指的是每个请求之前的时间,即单个用户每个请求的平均处理时间。

六。测试nginx的性能

第五步,测试apache的性能。现在我们来测试一下nginx的性能。

首先,配置nginx的虚拟主机,如下所示:

cat/usr/local/nginx/conf/nginx.conf|grep-v^#|grep-v^$

配置虚拟主机后,我们现在可以访问虚拟主机了。如下所示:

wgeta.ilanni.com

注意,这个虚拟主机与apache的虚拟主机相同,并且请求相同的页面。

使用与apache相同的命令来测试nginx,如下所示:

http://a.ilanni.com/index.phpab-c10-n100

结果如下:

通过上图,测试结果也是一目了然。nginx测试的吞吐率为:每秒请求数:349.14[#/秒](平均值)。

对比apache请求该页面的吞吐率,发现nginx的吞吐率高于apache。根据前面提到的性能指标,每秒请求吞吐率越高,服务器性能越好。

也证明了nginx性能确实高于apache性能。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/783924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存