Web服務請求異步化測試(4)
發表于:2012-10-24來源:Csdn作者:放翁點擊數:
標簽:web測試
可以看到,在TPS和Response Time上兩者基本上沒有太大差別,TPS就等于500/3=167左右(3秒一個請求,因此用這種簡單算式可以算出),響應時間也較為正常。當時
可以看到,在TPS和Response Time上兩者基本上沒有太大差別,TPS就等于500/3=167左右(3秒一個請求,因此用這種簡單算式可以算出),響應時間也較為正常。當時我發現在每秒吞吐量上有些差別,后來單個測試case跑了一下,發現是返回的http header比較大,應該是在做異步化時重入等作的一些標識(后面其他容器的異步化也是一樣)。
最大處理請求數都在服務端后臺看到是500,等同于最大的并發用戶數。
場景2:1000 并發用戶場景下,后端服務一次請求消耗3秒鐘
容器 |
模式 |
TPS |
Average Response Time(s) |
Average Throughput(byte/s) |
最大請求處理數 |
Success rate |
Jetty7 |
asyn(resume) |
317.06 |
3.036 |
74826 |
1000 |
100% |
Tomcat6 |
syn |
163.323 |
5.904 |
18455 |
500 |
100% |
場景2就在資源不足的情況下,比較異步服務請求與同步請求處理能力。(例如由于后端某些服務比較慢,導致前段的服務器能夠承載的請求數目超過了線程數)
這個場景的結果可以看到TPS在異步模式下與并發用戶數呈現同步增長,就好比配置了1000個線程作為線程池一樣,同樣在后端打出的最大請求數上也證明了這一點,因此前段線程池的服務能力在異步的情況下充分復用(當然這里使用的異步服務處理使用的是NIO而不是BIO的Connector)。同樣在吞吐量上依然是增加的,由于異步附加的內容。
場景3:1500 并發用戶場景下,后端服務一次請求消耗3秒鐘
容器 |
模式 |
TPS |
Average Response Time(s) |
Average Throughput(byte/s) |
Server Load |
Success rate |
Jboss |
syn |
75.546 |
5.347 |
21002 |
0.115 |
68% |
Jetty7 |
Syn |
163.156 |
8.788 |
19252 |
0.129 |
100% |
Jetty7 |
Asyn(complete) |
432.153 |
3.312 |
76491 |
2.649 |
100% |
Jetty7 |
Asyn(resume) |
423.638 |
3.375 |
99979 |
2.826 |
100% |
Tomcat6 |
Syn |
163.836 |
8.75 |
18513 |
0.258 |
100% |
Tomcat7 |
ASyn |
423.501 |
3.328 |
54632 |
1.064 |
99.3% |
場景三比對了現有TOP的部署模式(Apache + modjk + Jboss)和Jetty7的同步模式,兩種異步模式,Tomcat同步模式,Tomcat的servlet3.0異步模式的處理情況。根據測試可以得到的信息如下:
1. 現有部署方式在后端服務處理耗時較大的情況下,處理能力不如Jetty7和Tomcat6,同時出錯率很高。
2. Jetty7的同步處理測試結果和Tomcat6的同步處理測試結果很類似,但是load方面jetty7更好。
3. 異步處理方面Jetty7的兩種方式基本上差別不大(后續還需要深入源碼看看對于數據緩存資源復用的狀況),Tomcat7的異步處理成功率有些問題(錯誤多半是在獲取response回寫的時候,response已經被提前釋放,看來Tomcat7還是需要一些時間來考驗),load上來說tomcat結果比較好。
原文轉自:http://www.kjueaiud.com