一、ab工具
-
ab是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試。
-
ab的原理:ab命令會創建多個併發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。
-
ab命令對發出負載的計算機要求很低,不會佔用很高CPU和內存,但也能給目標服務器產生巨大的負載,使用的時候要注意,如果一次太多的負載,可能導致主機資源耗盡,嚴重時可能死機。
-
ab工具是裝完Apache服務就自帶的,位於 /usr/bin/ab 下
-
命令格式:
例:ab -n 2000 -c 800 www.test.com/index.html
//800爲併發數,2000爲總請求數
參數說明:
-n:測試會話中所執行的請求總數,默認時僅執行一個請求;
-c:併發產生的請求個數,默認是一個一次;
-t:測試所進行的最大秒數;
-v:設置顯示信息的詳細過程
- ab測試結果關鍵參數說明:
二、優化前壓測模擬
- 手工編譯安裝Apache
1、掛載共享文件,並解壓到 /opt/目錄下。
mount.cifs //192.168.56.1/share /mnt #192.168.56.1是我的宿主機IP地址
#解壓
tar -zxvf apr-1.4.6.tar.gz -C /opt/
tar -zxvf apr-util-1.4.1.tar.gz -C /opt/
tar -zxvf httpd-2.4.2.tar.gz -C /opt/
#安裝包優化
cd /opt
mv apr-1.4.6/ httpd-2.4.2/srclib/apr
mv apr-util-1.4.1/ httpd-2.4.2/srclib/apr-util
2、安裝編譯工具
yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel make
3、在 /opt/httpd-2.4.2 配置
cd httpd-2.4.2/
#有configure的文件,執行以下命令
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
4、make && make install
5、打開Apache的主配置文件
vim /usr/local/httpd/conf/httpd.conf
#修改域名和監聽地址
ServerName www.test.com:80
Listen 192.168.220.134:80
#Listen 80
6、開啓apache服務,關閉防火牆
#開啓apache服務
/usr/local/httpd/bin/apachectl start
#關閉防火牆
systemctl stop firewalld
setenforce 0
7、先給網頁站點插入圖片
cd /mnt/httpd
cp game.jpg /usr/local/httpd/htdocs/
cd /usr/local/httpd/htdocs/
#在index.html中引用圖片
vim index.html
<html>
<body>
<h1>It works!</h1>
<img src="game.jpg"/> #增添這一行,把圖片加在網頁中
</body>
</html>
8、做域名解析
兩個方式:
1、安裝bind,做DNS正向解析。
2、指向hosts文件
echo "192.168.220.134 www.test.com">>/etc/hosts
9、優化前進行多次壓測,取平均值
#1、查看是否有工具ab
which ab
/usr/bin/ab
#2、查看網絡互通
ping www.test.com //通即可壓測
#多次進行
ab -n 2000 -c 800 www.test.com/index.html
三、優化後壓測模擬
現在開始進行優化壓縮,與優化前的測試結果比對
打開Apache的主配置文件
vim /usr/local/httpd/conf/httpd.conf
#只更改一處:
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/p .ng
DeflateCompressionLevel 6
SetOutputFilter DEFLATE
</IfModule>
#驗證apache的配置文件是否有語法錯誤
/usr/local/httpd/bin/apachectl -t
Syntax OK
#啓動apache
執行 /usr/local/httpd/bin/apachectl restart
或者service httpd restart
優化後再進行壓測
ab -n 2000 -c 800 www.test.com/index.html
多次重啓服務測試
/usr/local/httpd/bin/apachectl stop
/usr/local/httpd/bin/apachectl start
四、模擬總結
- 通過比較可以發現,結果參數發生了變化,在 現實網絡中的生產環境,可以根據承載的請求數等,頻繁的調整參數,以使Apache 發揮出最大的優化性能。
- 在測試中,如果數據不太精準,可能是壓測的內容佔用太小,可以在網頁中多放幾張圖片增加