Apache深入优化----ab压力测试
程序员文章站
2022-03-15 23:46:12
...
文章目录
前言:
-
Apache的默认配置可以保证基本运行服务,但是在生产环境中,有时候需要把服务器性能发挥到最大,此时,需要我们进行深入优化
-
深入优化包括对服务器进行压力测试,然后对相应数据进行优化,以便充分发挥服务器的作用
一、ab压力概述
1.1 ab压力测试工具简介
- ab是apachebench命令的缩写。
- ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
- Apache自带压力测试工具ab,简单易用,它对发出负载的计算机要求很低,它既不会占用很高的CPU,也不会占用很多的内存,但也能给目标服务器产生巨大的负载,使用的时候要注意,如果一次太多的负载,可能导致主机资源耗尽,严重时可能死机。
1.2 ab压测工具命令、参数
- ab工具使用的命令格式
ab -n 2000 -c 800 www.test.com/index.html
参数说明:
-n:测试会话所执行的请求总数,默认时仅执行一个请求;
-c :并发产生的请求个数,默认时一个一次;
-t :测试所进行的最大描述
-v :设置显示信息的详细过程
1.3 ab测试结果关键参数说明
二、ab压测实验
此项实验我们将分别在优化前后进行压测,对比前后结果
虚拟机环境:Centos 7 操作系统
2.1 手工编译安装Apache
- 挂载共享文件、解压到/opt/目录中
[@localhost ~]# mount.cifs //192.168.181.1/LAMP-C7 /mnt
Password for aaa@qq.com//192.168.181.1/LAMP-C7:
[@localhost ~]# cd /mnt
[aaa@qq.com mnt]# ls
amoeba-mysql-binary-2.2.0.tar.gz Discuz_X2.5_SC_UTF8.zip mha.rar
apr-1.6.2.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
apr-util-1.6.0.tar.gz LNMP-C7 php-5.6.11.tar.bz2
awstats-7.6.tar.gz LNMP-C7.rar
cronolog-1.6.2-14.el7.x86_64.rpm mha
- 解压跨平台组件包和源码包
[aaa@qq.com mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt
[aaa@qq.com mnt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
...............省略部分内容
[aaa@qq.com mnt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt
...............省略部分内容
[aaa@qq.com mnt]# cp dog.jpg /usr/local/httpd/htdocs/
[aaa@qq.com mnt]# cd /opt
[aaa@qq.com opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
[aaa@qq.com opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[aaa@qq.com opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
- 安装编译工具及环境包
[aaa@qq.com opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> zlib-devel \
> expat-devel \
> pcre \
> perl
...........省略部分内容
- 配置编译
[aaa@qq.com opt]# cd /opt/httpd-2.4.29/
[aaa@qq.com httpd-2.4.29]#./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-deflate \
--enable-expires \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
........省略部分内容
[aaa@qq.com httpd-2.4.29]# make #生产可执行的二进制文件
........省略部分内容
[aaa@qq.com httpd-2.4.29]# make install #复制二进制文件到系统,配置应用环境
........省略部分内容
- 创建软链接便于管理
[aaa@qq.com httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[aaa@qq.com httpd-2.4.29]# ln -s /usr/local/httpd/bin/ab /usr/sbin #创建软链接,让httpd的ab命令便于系统管理
2.2 网站部署及ab压力测试
2.2.1 配置apache
- 修改域名和监听地址
[aaa@qq.com bin]# vim /etc/httpd.conf
Listen 192.168.181.129:80 #将监听地址修改为本机地址
#Listen 80 #关闭ipv6监听地址
ServerName www.cats.com:80 #修改域名
---------》wq
- 关闭防火墙、开启Apache服务
[aaa@qq.com bin]# systemctl stop firewalld
[aaa@qq.com bin]# setenforce 0
[aaa@qq.com bin]# ./apachectl start
- 配置网页站点
[aaa@qq.com bin]# cd ..
[aaa@qq.com httpd]# cd htdocs/
[aaa@qq.com htdocs]# ls
index.html
[aaa@qq.com htdocs]# vim index.html
<html><body><h1>It works!</h1>
<img src="cat.jpg"/>
</body></html>
--------->wq
[aaa@qq.com htdocs]# cd /mnt
[aaa@qq.com mnt]# cp cat.jpg /usr/local/httpd/htdocs/
[aaa@qq.com htdocs]# ls
cat.jpg index.html
2.2.2 设置域名解析
方式一:安装bind,做正向解析
方式二:指向hosts文件
示例:
[aaa@qq.com htdocs]# echo "192.168.181.129 www.cats.com" >> /etc/hosts
-
使用win10-1 虚拟机测试网页
2.3 进行ab压测测试
- 优化前进行多次压测、取均值
示例:
[aaa@qq.com htdocs]# ab -n 2000 -c 800 www.cats.com/index.html
进行测试5次、平均时间为:22秒
2.4 优化后压测对比
- 修改配置文件
LoadModule headers_ module modules/ mod_ headers. so #默认开启
LoadModule deflate_ module modules/mod_ deflate. so #去掉前面“#”开启deflate模块
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/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
- 验证语法、重启服务
[aaa@qq.com bin]# ./apachectl -t
Syntax OK
[aaa@qq.com bin]# ./apachectl stop
[aaa@qq.com bin]# ./apachectl start
2.4.1 优化后压测实验
[aaa@qq.com htdocs]# ab -n 2000 -c 800 www.cats.com/index.html
示例:
进行测试5次、平均时间为:20秒
总结:
因为是临时创建的简易网站、站点中图片资源较少,优化前后的对比不明显,现网环境中,可以使用apache自带的ab测试工具进行测试、检验
后文将介绍apache的三种工作模式及目录属性