apache-ab 併發負載壓力測試
網站效能壓力測試是伺服器網站效能調優過程中必不可缺少的一環。只有讓伺服器處在高壓情況下,才能真正體現出軟體、硬體等各種設定不當所暴露出的問題。
效能測試工具目前最常見的有以下幾種:ab、http_load、webbench、siege
ab是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache伺服器進行網站訪問壓力測試,也可以對或其它型別的伺服器進行壓力測試。比如nginx、tomcat、IIS等。
一、ab 的原理(apachebench命令的縮寫)
ab命令會建立多個併發訪問執行緒,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web伺服器的壓力
ab命令對發出負載的計算機要求很低,它既不會佔用很高CPU,也不會佔用很多記憶體。但卻會給目標伺服器造成巨大的負載,其原理類似CC攻擊。自己測試使用也需要注意,否則一次上太多的負載。可能造成目標伺服器資源耗完,嚴重時甚至導致宕機
二、安裝(以 Linux 環境為例 )
①原始碼安裝
②apache 通過 yum 的 RPM 包方式安裝 預設存放在 /usr/bin
1) /opt下面解壓:httpd-2.2.29.tar.gz
2) /opt下進入httpd-2.2.29資料夾:cd httpd-2.2.29
3) 安裝
在 /usr/local/web/apache 目錄下安裝Apache執行以下命令
./configure --prefix=/usr/local/web/apache --enable-shared=max --enable-module=rewirte --enable-module=so
由於版本問題出現以上錯誤。(Elsa 本人64 位機器出現此問題)
解決方案:
Redhat系列(包括 fedroa, centos)用命令
yum groupinstall “Development Tools”
Debian系列(包括 ubuntu) 用命令
aptitude install build-essential
本人使用的是centOs 執行 yum groupinstall “Development Tools” 命令 ,之後再重新執行
1. ./configure --prefix=/usr/local/web/apache --enable-shared=max --enable-module=rewirte --enable-module=so
執行完畢
2. 執行 make 命令編譯
3. 執行 make install 安裝
which ab 檢視安裝位置
which ab
③ 不想安裝Apache 但是想使用 ab 命令時可以直接安裝 Apache 的工具包 http-tools
yum -y install httpd-tools
檢視安裝是否成功
ab -V
安裝成功則會顯示版本資訊
window 安裝
目前apache最新版2.4.10,apache官網已經沒有windows下載的版本。但是我們可以下載apache官網提供的整合軟體包
[下載地址](http://apache.fayea.com/httpd/binaries/win32/)
三、引數說明
測試命令
ab [ -A auth-username:password ][ -b windowsize ][ -c concurrency ][ -C cookie-name=value ][ -d ][ -e csv-file ][ -f protocol ][ -g gnuplot-file ][ -h ][ -H custom-header ][ -i ][ -k ][ -n requests ][ -p POST-file ][ -P proxy-auth-username:password ][ -q ][ -r ][ -s ][ -S ][ -t timelimit ][ -T content-type ][ -u PUT-file ][ -v verbosity][ -V ][ -w ][ -x <table>-attributes ][ -X proxy[:port] ] [ -y <tr>-attributes ][ -z <td>-attributes ][ -Z ciphersuite ][http[s]://]hostname[:port]/path
說明:
-c concurrency 併發量
-n requests 請求數
通常使用最多的引數 -n -c
四、ab 效能指標
在進行效能測試過程中有幾個指標比較重要
1、吞吐率(Requests per second)
2、併發連線數(The number of concurrent connections)
3、併發使用者數(Concurrency Level)
4、使用者平均請求等待時間(Time per request)
5、伺服器平均請求等待時間(Time per request:across all concurrent requests)
五、ab的應用
ab 在 Linux 系統中壓力測試安裝完事之後,直接可以測試其他任意的網站
ab -n10000 -c1000 https://101.201.142.142:443**/**
請求後面可以不新增埠號使用預設,當手動寫入時:http -80 https - 443
分析資料
Requests per second: 3684.48 [#/sec] (mean)
Requests per second: 4443.88 [#/sec] (mean)
Requests per second: 4103.85 [#/sec] (mean)
APR配置之後
Requests per second: 2079.95 [#/sec] (mean)
Requests per second: 5474.69 [#/sec] (mean) 吞吐量。每秒請求數可以衝刺到 5k 多
測試中最尾部一定要有一個“/”,否則出現以下錯誤
ab 壓測至少是10次
tomcat 是 servlet 容器,servlet 第一次編譯成jsp 檔案比較慢,但是第二次訪問不需要再次編譯,所以第一次不算數
cat /etc/httpd/conf/httpd.conf|grep -v ^#|grep -v ^$
mkdir -p /www/a.lxy.com
echo '<?php phpinfo();?>'>/www/a.lxy.com/index.php
cat /www/a.lxy.com/index.php