服务器压力测试(Linux使用ab工具命令对Web网站服务器进行压力测试)

ab是apachebench命令的缩写,它是apache自带的Web性能测试工具。ab工具非常实用,它可以去创建多个并发访问线程,模拟多个访问客户端同时对某一网站URL地址进行访问,这样我们就可以用来测试apache的负载压力,也可以对其它类型的服务器进行压力测试,比如nginx、tomcat、IIS等其它WEB服务器的压力。网站性能压力测试可以说是服务器网站性能调优过程中必不可缺少的一环,只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。本文详细介绍一下ab工具的使用。ab安装ab安装我们可以通过yum方式直接安装apache的工具包httpd-tools。yum -y install httpd-tools安装完成后可使用“ab –V”命令查看当前的版本。有关ab命令的使用,我们可以通过“ab -help”帮助命令进行查看。如下:ab使用ab的命令参数比较多,但是我们常用的主要参数就是-n和-c参数。-n:表示一共模拟访问的次数。-c:表示模拟并发的客户端数量。模拟访问次数除以客户端就是每个客户端所发送的访问请求。命令:ab -n Number1 -c Number2 url实例:ab -n 100 -c10 https://www.baidu.com/输出结果如下:# ab -n 100 -c 10 https://www.baidu.com/
This is ApacheBench, Version 2.3 <$Revision: 1430300 gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.baidu.com (be patient)…..done
Server Software: BWS/1.1 #Web服务器软件版本
Server Hostname: www.baidu.com #请求的URL主机名
Server Port: 443 #Web服务器软件的监听端口
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128 #SSL协议类型
Document Path: / #请求的URL中的根绝对路径
Document Length: 227 bytes #HTTP响应数据的正文长度
Concurrency Level: 10 #请求的并发数,设置的-c参数
Time taken for tests: 1.276 seconds #所有这些请求被处理完成所花费的总时间
Complete requests: 100 #总请求数量,设置的-n参数
Failed requests: 0 #失败的请求数量
Write errors: 0
Total transferred: 111098 bytes #所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,仅仅为web服务器流向用户PC的应用层数据总长度。
HTML transferred: 22700 bytes #所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度。
Requests per second: 78.38 [#/sec] (mean) #吞吐率,也叫QPS,计算公式:Complete requests/Time taken for tests
Time per request: 127.583 [ms] (mean) #用户平均请求等待时间,从用户角度看,完成一个请求所需要的时间。计算公式:Time token for tests/(Complete requests/Concurrency Level)
Time per request: 12.758 [ms] (mean, across all concurrent requests) #服务器完成一个请求的时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数
Transfer rate: 85.04 [Kbytes/sec] received #网络传输速度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量
Connection Times (ms)
min mean[+/-sd] median max
Connect: 42 85 17.3 88 129
Processing: 15 27 10.8 23 66
Waiting: 15 27 10.5 23 66
Total: 67 112 19.7 111 167
#这几行组成的表格主要是针对响应时间也就是第一个Time per request进行细分和统计。一个请求的响应时间可以分成网络链接(Connect),系统处理(Processing)和等待(Waiting)三个部分。
表中min表示最小值; mean表示平均值;[+/-sd]表示标准差(Standard Deviation) 表示数据的离散程度,数值越大表示数据越分散,系统响应时间越不稳定。 median表示中位数; max表示最大值。
需要注意的是表中的Total并不等于前三行数据相加,因为前三行的数据并不是在同一个请求中采集到的,可能某个请求的网络延迟最短,但是系统处理时间又是最长的呢。所以Total是从整个请求所需要的时间的角度来统计的。这里可以看到最慢的一个请求花费了167ms
Percentage of the requests served within a certain time (ms)
50% 111
66% 121
75% 124
80% 128
90% 136
95% 152
98% 161
99% 167
100% 167 (longest request)
#这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,50%的请求处理时间都不超过111ms,60%的请求处理时间都不超过121ms…这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间总结ab工具使用方便,上手较快,可以提供查看服务器性能的基本指标,但是不能够以图形化的形式展现,也不能监控,所以可以做临时的、简单的服务器性能测试。同类型的压力测试工具还有:webbench、siege等。需要注意的是ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。我们测试使用时需要注意,否则一次上太多的负载,可能造成目标服务器资源耗完,严重时甚至导致死机。


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/36590/