壓力測試是一項很重要的工作。比如在一個網站上線之前,能承受多大訪問量、在大訪問量情況下性能怎樣,這些數據指標好壞將會直接影響用戶體驗。但是,在壓力測試中存在一個共性,那就是壓力測試的結果與實際負載結果不會完全相同,就算壓力測試工作做的再好,也不能保證100%和線上性能指標相同。面對這些問題,我們只能盡量去想方設法去模擬。所以,壓力測試非常有必要,有了這些數據,我們就能對自己做維護的平台做到心中有數。網站性能壓力測試是性能調優過程中必不可少的一環,只有讓伺服器處在高壓情況下才能真正體現出各種設置所暴露的問題。

下面就介紹常用的兩款最實用的web性能壓力測試工具

目錄:

1.Web必備性能壓力測試工具WebBench詳解

2.Web必備性能壓力測試工具ApcheBench詳解

一:Web必備性能壓力測試工具WebBench詳解

Webbench是知名的網站壓力測試工具,它是由Lionbridge公司(51testing.com)開發。

Webbench能測試處在相同硬體上,不同服務的性能以及不同硬體上同一個服務的運行狀況。webbench的標準測試可以向我們展示伺服器的兩項內容:每秒鐘相應請求數和每秒鐘傳輸數據量。webbench不但能具有便准靜態頁面的測試能力,還能對動態頁面(ASP,PHP,JAVA,CGI)進 行測試的能力。還有就是他支持對含有SSL的安全網站例如電子商務網站進行靜態或動態的性能測試。Webbench最多可以模擬3萬個並發連接去測試網站的負載能力。

1、WebBench安裝:

2、WebBench用法:

Apache測試實例結果:

#當並發300時,顯示為有0個鏈接failed了,說明沒有超負荷

[root@aliyun webbench-1.5]# webbench -c 300 -t 60

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET

300 clients, running 60 sec.

Speed=24525 pages/min, 20794612 bytes/sec.

Requests: 24525 susceed, 0 failed.

#當並發1000時,已經顯示有87個連接failed了,說明超負荷了。

[root@aliyun webbench-1.5]# webbench -c 1000 -t 60

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET

1000 clients, running 60 sec.

Speed=24920 pages/min, 21037312 bytes/sec.

Requests: 24833 susceed, 87 failed.

並發1000運行60秒後產生的TCP連接數達到27000多個:

使用 WebBench工具 總結:

1、壓力測試工作一定要放到產品上線之前,而不是上線以後。

2、測試時並發應當由小逐漸加大,比如並發100時觀察一下網站負載是多少、打開頁面是否流暢,並發200時又是多少、網站打開緩慢時並發是多少、網站打不開時並發又是多少,最後做好數據統計。對結果進行更細緻的分析

3、更詳細的進行某個頁面測試,對著訪問比重比較大的文件。如電商網站可以著重測試購物車、推廣頁面等,因為這些頁面占整個網站訪問量比重較大。

二:Web必備性能壓力測試工具ApcheBench詳解

ApacheBench命令原理:

ab命令會創建很多的並發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,既可以用來測試Apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web伺服器的壓力。

ab命令對發出負載的計算機要求很低,既不會佔用很高CPU,也不會佔用很多內存,但卻會給目標伺服器造成巨大的負載,其原理類似CC×××。自己測試使用也須注意,否則一次上太多的負載,可能造成目標伺服器因資源耗完,嚴重時甚至導致死機。

參數很多,一般我們用 -c 和 -n 參數就可以了。例如

稍等一會得到類似如下顯示結果(省略部分):

結果分析如下:

使用ApcheBench(ab)總結:在遠程對web伺服器進行壓力測試,往往效果不理想(因為網路延時過大),建議使用內網的另一台或者多台伺服器通過內網進行測試,這樣得出的數據,準確度會高很多。如果只有單獨的一台伺服器,可以直接本地測試,比遠程測試效果要更準確。(但是要注意在沒上線的情況下)

如果有任何疑問,歡迎添加qq群測試入門到大神 755431660 共同學習~

推薦閱讀:

相关文章