前言
入職了新公司配置了mac辦公,當要進行測試時同事說到用ab測試,當時的我一臉懵逼ab是個啥?當他爲我解釋完ab是個啥的時候,我想那就動手裝一個吧,結果人家說mac下已經裝好了,再一次被打臉….
下面我們進入正題,再網上搜了很多資料大部分都是介紹了一些安裝及無參數的測試,對需要傳參測試的並不太適用,本篇文章是對網上文章的一些總結,測試均採用自己的例子。
壓測相關概念
吞吐率(Requests per second)
概念:服務器併發處理能力的量化描述,單位是reqs/s,指的是某個併發用戶數下單位時間內處理的請求數。某個併發用戶數下單位時間內能處理的最大請求數,稱之爲最大吞吐率。
計算公式:總請求數 / 處理完成這些請求數所花費的時間,即
Request per second = Complete requests / Time taken for tests併發連接數(The number of concurrent connections)
概念:某個時刻服務器所接受的請求數目,簡單的講,就是一個會話。併發用戶數(The number of concurrent users,Concurrency Level)
概念:要注意區分這個概念和併發連接數之間的區別,一個用戶可能同時會產生多個會話,也即連接數。用戶平均請求等待時間(Time per request)
計算公式:處理完成所有請求數所花費的時間/ (總請求數 / 併發用戶數),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)服務器平均請求等待時間(Time per request: across all concurrent requests)
計算公式:處理完成所有請求數所花費的時間 / 總請求數,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒數。
同時,它也=用戶平均請求等待時間/併發用戶數,即
Time per request / Concurrency Level
apache ab配置
- 開啓
mac下已經安裝好了apaache我們之間開啓就好了
鍵入 sudo apachectl -v 顯示apache信息
鍵入 sudo apachectl start 開啓 - 配置
打開Apache的配置文件
sudo vi /etc/apache2/httpd.conf在httpd.conf中找到“#Include /private/etc/apache2/extra/httpd-vhosts.conf”,去掉前面的“#”,保存並退出,去掉這一行的#意思是從/extra/httpd-vhosts.conf這個文件導入虛擬主機配置。
然後重啓Apache
sudo apachectl restart
運行如下命令:
sudo vi /etc/apache2/extra/httpd-vhosts.conf
就打開了配置虛擬主機文件httpd-vhost.conf,配置虛擬主機了。需要注意的是該文件默認開啓了兩個作爲例子的虛擬主機:
增加如下配置
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents"
ServerName localhost
ErrorLog "/private/var/log/apache2/localhost-error_log"
CustomLog "/private/var/log/apache2/localhost-access_log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/snandy/work"
ServerName mysites
ErrorLog "/private/var/log/apache2/sites-error_log"
CustomLog "/private/var/log/apache2/sites-access_log" common
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
保存退出,後重啓apache就可以進行壓測了。
apache ab 壓測
測試命令
ab -n 100 -c 10 http://test.com/
其中-n表示請求數,-c表示併發數
其餘命令請參見 http://apache.jz123.cn/programs/ab.html
測試Get請求並傳入一個參數
這裏我就直接貼出來我得測試結果
測試get請求並輸入兩個參數
同樣直接貼圖了
測試post請求
post有兩個參數:p(小寫),T(大寫),注意區分大小寫,一個是用於指定POST請求時的參數文件,一個用於指定請求的類型Content-type,關於Content-type的類型,大家可以百度。
我自己的測試中並沒有指定
以下爲我得參數json串。
{"lesson_id":8877,"unionid":"f2_877","user_id":123}