ab压力测试工具
-
Apache自带压力测试工具ab,简单易,,且可以模拟各种条件对Web服务器发起测试请求
-
ab工具可以直接在Web服务器本地发起测试请求,这对于需要了解服务器的处理性能至关重要,因为它不包括数据的网络传输时间以及用户PC本地的计算时间,从而可以通过观测各种时间指标判断Web服务器的性能,,以便进行参数的优化调整
-
在进行性能调整优化过程中,可用ab压力测试工具进行优化效果的测试
- 优化前先使用ab进行压力测试
- 优化后,重启服务,再使用ab进行压力测试
- 对比两次测试的结果,看优化效果是否明显
- 为了能更客观的评价web服务的性能, 一般优化前后都要进行多次测试,取测试结果的平均值进行对比
ab工具使用
命令格式
语法:ab [options] 网站网址
参数说明
- -n :测试会话中所执行的请求总数,默认时仅执行一个请求
- -c :并发产生的请求个数。默认是一次一个
- -t :测试所进行的最大秒数
- -v :设置显示信息的详细程度
示例
在测试时要根据情况调整求总数与并发用户数
ab -n 2000 -c 800 www.kgc.com/index.html
ab测试结果关键参数说明
参数 | 描述 |
---|---|
Server Software | http响应数据的头信息 |
Server Hostname | 请求的url中的主机名称 |
Server Port | web服务器软件的监听端口 |
Document Path | 请求的url根的绝对路径 |
Document Length | http响应数据的正文长度 |
Concurrency Level | 并发的用户数 |
Time taken for tests | 所有这些请求被处理完成所花费的时间总 和 |
Complete requests | 表示总请求数 |
Failed requests | 失败的请求总数 |
Total transferred | 请求的响应数据长度总和 |
Requests per second | 服务器的吞吐率,每秒处理的请求数 |
Time per request | 用户平均请求等待时间 |
Time per request | 每个请求实际运行时间的平均值 |
Percentage of the request sserved within a certain time (ms) | 描述每个请求处理时间的分布情况 |
ab压测实验:
#首先先关闭防火墙,挂载安装包并进行解压
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.17.1/share /abc
Password for root@//192.168.17.1/share:
[root@localhost ~]# cd /abc
[root@localhost abc]# ls
apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip httpd-2.4.2.tar.gz nz.jpg
apr-util-1.6.0.tar.gz error.png john-1.8.0.tar.gz php-5.6.11.tar.bz2
awstats-7.6.tar.gz extundelete-0.2.4.tar.bz2 LAMP.txt
cronolog-1.6.2-14.el7.x86_64.rpm httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
[root@localhost abc]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
[root@localhost abc]# tar zxvf apr-1.6.2.tar.gz -C /opt
[root@localhost abc]# tar zxvf httpd-2.4.2.tar.gz -C /opt
#安装编译语言
[root@localhost abc]# yum install gcc gcc-c++ pcre* zlib-devel make expat-devel perl -y
#切换至httpd目录下进行安装模块并进行编译安装
[root@localhost abc]# cd /opt
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.2 rh
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.2/srclib/apr-util
[root@localhost opt]# ls
httpd-2.4.2 rh
[root@localhost opt]# cd httpd-2.4.2/
[root@localhost httpd-2.4.2]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
[root@localhost httpd-2.4.2]# make && make install
#复制启动脚本并进行配置
[root@localhost httpd-2.4.2]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.2]# vim /etc/init.d/httpd
#35级别自动运行 第85个启动 第21个关闭
# chkconfig: 35 85 21
# description: Apache is a World Wide Web server
[root@localhost httpd-2.4.2]# chkconfig --add httpd //添加系统识别httpd
[root@localhost httpd-2.4.2]# chkconfig --level 35 httpd on //设置开机自启
#对配置文件路径进行优化并修改主配置文件
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ //建立配置文件连接便于管理
[root@localhost httpd-2.4.2]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ //将bin目录下的所有连接到/usr/local/bin中以便系统识别
[root@localhost httpd-2.4.2]# vim /etc/httpd.conf
Listen 192.168.17.142:80
ServerName www.kgc.com:80
#到站点文件中添加图片等信息,用于压测
[root@localhost httpd-2.4.2]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim index.html
<html><body><h1>It works!</h1>
<img src="nz.jpg"/>
<img src="error.png"/>
</body></html>
[root@localhost htdocs]# cp /abc/nz.jpg ./
[root@localhost htdocs]# cp /abc/error.png ./
[root@localhost htdocs]# ls
error.png index.html nz.jpg
#测试时需要用到域名,需要做域名解析,可以改hosts文件,添加本地解析地址
[root@localhost httpd-2.4.2]# vim /etc/hosts
192.168.17.142 www.kgc.com
[root@localhost httpd-2.4.2]# service httpd start
#这时我们先不进行压缩优化,直接开启服务进行测试
通过域名可以直接进行访问
检查ab压测工具并进行压测
[root@localhost htdocs]# which ab
/usr/local/bin/ab
[root@localhost htdocs]# ab -n 2000 -c 800 www.kgc.com/index.html
多压测几次,压缩时间稳定后取平均
#现在我们到主配置文件中打开压缩模块并进行配置
[root@localhost htdocs]# vim /etc/httpd.conf
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so //开启模块,去掉#号
LoadModule filter_module modules/mod_filter.so
…………
<IfModule mod_deflate.c> //配置文件末尾添加压缩标签
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/p
ng
SetOutputFilter DEFLATE
</IfModule>
#配置完成后再次使用压测工具进行检测
[root@localhost htdocs]# ab -n 2000 -c 800 www.kgc.com/index.html
通过压缩前后比较可以发现,最后参数发生了变化,所以,我们可以根据承载的请求数等,适当的调整参数,使Apache 发挥出最大的优化性能