在運維工作中,壓力測試是一項很重要的工作。比如在一個網站上線之前,能承受多大訪問量、在大訪問量情況下效能怎樣,這些資料指標好壞將會直接影響使用者體驗。但是,在壓力測試中存在一個共性,那就是壓力測試的結果與實際負載結果不會完全相同,就算壓力測試工作做的再好,也不能保證100% 和線上效能指標相同。面對這些問題,我們只能儘量去想方設法去模擬。所以,壓力測試非常有必要,有了這些資料,我們就能對自己做維護的平臺做到心中有數
效能測試工具目前最常見的有以下幾種:ab、http_load、webbench、siege。
webbench是有名的網站壓力測試工具,最多可以模擬3萬個併發連線去測試網站的負載能力。
webbench能測試處在相同硬體上,不同服務的效能以及不同硬體上同一個服務的執行狀況。
webbench的標準測試可以向我們展示伺服器的兩項內容:每秒鐘相應請求數和每秒鐘傳輸資料量。
linux webbench不但能具有便準靜態頁面的測試能力,還能對動態頁面(ASP,PHP,JAVA,CGI)進行測試的能力。還有就是他支援對含有SSL的安全網站例如電子商務網站進行靜態或動態的效能測試。
MAC安裝webbench
wget http://blog.zyan.cc/soft/linux/webbench/webbench-1.5.tar.gz
tar -zxvf webbench-1.5.tar.gz
cd webbench-1.5
sudo make && sudo make install # sudo 許可權因為需要建立資料夾
使用方法:
webbench -c 500 -t 30 http://127.0.0.1/index.html
引數說明:-c表示併發數,-t表示時間(秒)
注意:webbench 做壓力測試時,該軟體自身也會消耗CPU和記憶體資源,為了測試準確,請將 webbench 安裝在別的伺服器上.
apache安裝完畢後ab命令存放在apache安裝目錄的bin目錄下,注意:如果不想安裝apache但是又想使用ab命令的話,我們可以直接安裝apache的工具包httpd-tools。如下:
yum -y install httpd-tools
如果ab安裝成功,通過ab –V命令則會顯示ab的相迎版本。這個測試的最大併發量相對較小,一般1000左右就會出現請求拒絕
ab的原理:ab命令會建立多個併發訪問執行緒,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web伺服器的壓力。
ab -c 10 -n 100 http://127.0.0.1/index.php
-c10表示併發使用者數為10 -n100表示請求總數為100 這行表示同時處理100個請求並執行10次index.php檔案。
測試前,前面先把系統的埠限制數改大,看看Mac下面的預設限制
ulimit -a
2000多的file descriptors數是很小的,我們把他改大,當然我測試過了,也只能開10000而已,Linux可以開6W多,所以:
ulimit -n 10000
在用 ulimit -a 檢查一下
總結
1、壓力測試工作應該放到產品上線之前,而不是上線以後
2、測試時儘量跨公網進行,而不是內網
3、測試時併發應當由小逐漸加大,比如併發100時觀察一下網站負載是多少、開啟是否流程,併發200時又是多少、網站開啟緩慢時併發是多少、網站打不開時併發又是多少
4、 應儘量進行單元測試,如B2C網站可以著重測試購物車、推廣頁面等,因為這些頁面佔整個網站訪問量比重較大