轉自:http://zhumeng8337797.blog.163.com/blog/static/100768914201241953448388/
Tomcat壓力測試
I. 前言
我公司網站的部署使用了Tomcat,網絡上關於Linux下Tomcat的性能數據比較少.爲了對Tomcat的性能有一個大概的瞭解,分別對Tomcat和Apache作了多次的壓力測試,並將測試的數據進行對比.
每次壓力測試大體的測試環境一樣,以下說明是每次測試環境中相同的部分,不同的部分在下面的章節另外補充說明.
測試環境說明:
1. 測試工具: siege
2. 併發線程數100~1000,每次遞增100,測試完一次重啓一次tomcat.
3. 測試時間: 每次 1 分鐘
4. tomcat服務器硬件配置:
Cpu: 雙核Pentium(R) Dual-Core CPU E5800 @ 3.20GHz
內存: 2G
6. siege每次最多隻能產生1000併發訪問,超過1000會報錯.
測試工具siege介紹
Siege是一個壓力測試和評測工具,設計用於WEB開發這評估應用在壓力下的承受能力:可以根據配置對一個WEB站點進行多用戶的併發訪問,記錄每個用 戶所有請求過程的相應時間,並在一定數量的併發訪問下重複進行。可以從ftp://ftp.joedog.org/pub/siege/下載最新版本的siege.
1、命令使用及解釋
siege -c 1000 -t 1 -f test2.url -i -b
-c 設置併發的用戶(連接)數
-t 持續時間,即測試持續時間,單位默認爲分鐘;如果需要按秒測試(比如30秒),可以用”-t 30s”
-f url列表文件,在裏面輸入要測試的ip地址或者url即可.
-i 隨機URL,默認是按列表文件從上往下順序連接.
-b 進行壓力測試,不進行延時
-r 重複次數. (本次測試沒有用到這個參數)
test2.url 隨機訪問的url列表
2、測試結果及解釋
Transactions: 68263 hits #一共完成了68263次測試
Availability: 99.51 % #測試有效率爲99.51%
Elapsed time: 59.60 secs #用時59.6s
Data transferred: 607.23 MB #傳輸數據607.23MB
Response time: 0.72 secs #響應時間0.72s
Transaction rate: 1145.35 trans/sec #每秒傳輸1145.35次
Throughput: 10.19 MB/sec #每秒吞吐量10.19MB
Concurrency: 827.78 #實際併發數827.78
Successful transactions: 68263 #測試成功次數68263
Failed transactions: 339 #失敗次數339
Longest transaction: 29.54 #單次傳輸所花最長時間29.54
Shortest transaction: 0.01 #單次傳輸所花最短時間0.01
另外,本人測試中發現,在32bit ubuntu中,siege最大併發數爲300;在64bit ubuntu中,siege最大併發數爲1000.
II.測試過程
測試過程根據網絡環境不同分兩部分,第一部分是局域網,理論速度100M;第二部分是城域網,兩端的帶寬均爲4M.
1、局域網測試
1.1、Tomcat測試
測試環境補充說明(以下城域網的測試,也是相同的環境):
tomcat軟件:
tomcat運行程序: raaslabs網站,沒有連接mysql
測試方式: 隨機訪問raaslabs網站的各個頁面,比如customizedDataMining.jsp、setupSupport.jsp、analysisResultSupport.jsp、aboutus、news等.
測試所得數據:
設置併發訪問數 | 完成測試次數 | 測試有效率 | 傳輸數據量(MB) | 響應時間(secs) | 每秒傳輸次數(trans/sec) | 每秒吞吐量( MB/sec) | 實際併發訪問數 | 測試成功次數 | 測試失敗次數 |
100 | 62627 | 100.00% | 557.08 | 0.09 | 1045 | 9.3 | 98.25 | 62627 | 0 |
200 | 66083 | 100.00% | 586.27 | 0.18 | 1119.1 | 9.93 | 198.64 | 66083 | 0 |
300 | 66498 | 100.00% | 592.2 | 0.27 | 1116.49 | 9.94 | 296.44 | 66498 | 0 |
400 | 67265 | 100.00% | 598.8 | 0.35 | 1121.83 | 9.99 | 392.08 | 67265 | 0 |
500 | 68068 | 99.92% | 605.26 | 0.41 | 1148.83 | 10.22 | 467.34 | 68068 | 55 |
600 | 68057 | 99.85% | 606.52 | 0.49 | 1151.17 | 10.26 | 561.23 | 68057 | 103 |
700 | 67837 | 99.80% | 603.51 | 0.54 | 1143.58 | 10.17 | 621.75 | 67837 | 139 |
800 | 68405 | 99.86% | 608.1 | 0.63 | 1148.51 | 10.21 | 729.14 | 68405 | 93 |
900 | 68288 | 99.79% | 607.88 | 0.69 | 1145.2 | 10.19 | 785.64 | 68288 | 146 |
1000 | 68715 | 99.60% | 612.79 | 0.75 | 1149.85 | 10.25 | 857.34 | 68715 | 273 |
1.2、Apache測試
測試環境補充說明(以下城域網的測試,也是相同的環境):
Apache運行程序: 單個靜態html頁面,未連接mysql
測試所得數據:
設置併發訪問數 | 完成測試次數 | 測試有效率 | 傳輸數據量(MB) | 響應時間(secs) | 每秒傳輸次數(trans/sec) | 每秒吞吐量( MB/sec) | 實際併發訪問數 | 測試成功次數 | 測試失敗次數 |
100 | 390103 | 100.00% | 16.37 | 0.01 | 6499.55 | 0.27 | 44.04 | 390103 | 0 |
200 | 376018 | 100.00% | 15.78 | 0.01 | 6260.71 | 0.26 | 78.03 | 376018 | 0 |
300 | 322767 | 100.00% | 13.55 | 0.02 | 5376.76 | 0.23 | 114.17 | 322911 | 0 |
400 | 265862 | 100.00% | 11.16 | 0.04 | 4490.15 | 0.19 | 194.12 | 265945 | 2 |
500 | 245208 | 100.00% | 10.29 | 0.07 | 3995.57 | 0.17 | 292.5 | 245331 | 2 |
600 | 214715 | 100.00% | 9.02 | 0.11 | 3624.49 | 0.15 | 386.79 | 214939 | 9 |
700 | 202195 | 99.99% | 8.49 | 0.14 | 3326.12 | 0.14 | 461.61 | 202381 | 27 |
800 | 255182 | 99.99% | 10.71 | 0.18 | 3278.71 | 0.14 | 585.25 | 255339 | 19 |
900 | 169483 | 99.98% | 7.12 | 0.22 | 2858.54 | 0.12 | 638.52 | 169729 | 35 |
1000 | 158309 | 99.96% | 6.65 | 0.28 | 2675.49 | 0.11 | 759.7 | 158416 | 66 |
2、城域網測試
2.1、Tomcat測試
說明:當併發數超過500時,siege運行失敗.
測試所得數據:
設置併發訪問數 | 完成測試次數 | 測試有效率 | 傳輸數據量(MB) | 響應時間(secs) | 每秒傳輸次數(trans/sec) | 每秒吞吐量( MB/sec) | 實際併發訪問數 | 測試成功次數 | 測試失敗次數 |
100 | 2738 | 100.00% | 24.22 | 1.86 | 45.91 | 0.41 | 85.38 | 2738 | 0 |
200 | 2765 | 99.32% | 24.34 | 3.45 | 46.14 | 0.41 | 159.07 | 2765 | 19 |
300 | 2687 | 99.08% | 23.74 | 5.15 | 44.84 | 0.4 | 230.81 | 2687 | 25 |
400 | 2562 | 98.84% | 22.59 | 6.53 | 43.06 | 0.38 | 281.31 | 2562 | 30 |
500 | 2548 | 98.95% | 22.61 | 8.01 | 42.84 | 0.38 | 343.16 | 2548 | 27 |
根據以上數據,可得出下面的曲線圖
2.2、Apache測試
測試所得數據:
設置併發訪問數 | 完成測試次數 | 測試有效率 | 傳輸數據量(MB) | 響應時間(secs) | 每秒傳輸次數(trans/sec) | 每秒吞吐量( MB/sec) | 實際併發訪問數 | 測試成功次數 | 測試失敗次數 |
100 | 5626 | 99.40% | 0.24 | 0.77 | 95.28 | 0 | 73.3 | 5626 | 34 |
200 | 5612 | 99.10% | 0.24 | 1.67 | 94 | 0 | 157.32 | 5612 | 51 |
300 | 5535 | 97.21% | 0.23 | 1.74 | 93.5 | 0 | 162.3 | 5535 | 159 |
400 | 5767 | 95.78% | 0.24 | 1.79 | 96.34 | 0 | 172.66 | 5767 | 254 |
500 | 5665 | 96.85% | 0.24 | 3.34 | 95.89 | 0 | 320.3 | 5665 | 184 |
600 | 5431 | 94.81% | 0.23 | 3.73 | 89.8 | 0 | 335.32 | 5431 | 297 |
700 | 5353 | 94.58% | 0.22 | 4.41 | 90.36 | 0 | 398.71 | 5353 | 307 |
800 | 5476 | 93.21% | 0.23 | 4.68 | 91.83 | 0 | 429.32 | 5476 | 399 |
900 | 5218 | 88.46% | 0.22 | 2.88 | 87.58 | 0 | 252.53 | 5218 | 681 |
1000 | 5707 | 88.41% | 0.24 | 3.25 | 96.11 | 0 | 312.27 | 5707 | 748 |
根據以上數據,可得出下面的曲線圖
III.結果
在局域網測試中,當Tomcat併發數達到500時,出現失敗的訪問.而Apache併發數達到700時,纔出現失敗的訪問
.
在城域網測試中,當Tomcat併發數超過500時,siege運行失敗.而Apache併發數達到1000時,siege可一直正常運行,但一直都有失敗的訪問.
IV. 總結
從數據來看,Apache的性能略優於Tomcat.個人認爲,從綜合因素來看,二者性能並無太大差別.因爲Tomcat是隨機訪問多個網頁,Apache是循環訪問一個html文件.每次訪問中,Tomcat的吞吐量比Apache要大得多.