2015年4月19日 星期日

Java Servlet Container Performance Tesing (2)

左邊是tomcat8-apr 右邊是 jetty9-nio

測試情境2

1. 當Web 收到Request 後,系統會產生一組Async 的CompletableFuture Task 去執行,產生CompletableFuture 使用newCachedThreadPool 。

2. 每個Task (Random 產生時間消耗 300~500 ms)

這次改用Ingram 大大推薦wrk 分別測試兩組數據:
wrk -t200 -c 500 -d180
wrk -t300 -c 800 -d180

產生了有趣的結果:



1. 測試機和web 都是A2的機器,wrk 的測試方法真的很操系統 load average: 32.06, 16.47, 12.81

2. tomcat 的記憶體是慢慢往上吃,jetty 是頻繁的GC,但是平均記憶體吃的比較少

3. tomcat 用完Thread 就全部還回去,但是Jetty 卻不會!?

4. 但是數據結果卻不一樣了tomcat-apr 的數據比jetty9-nio的數據好多了?(歪頭...)

(300 threads and 800 connections)

Tomcat8-apr

  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   301.58ms  101.78ms   1.03s    56.89%
    Req/Sec     7.18      3.66    20.00     84.98%
  358057 requests in 3.00m, 71.51MB read
Requests/sec:   1988.06
Transfer/sec:    406.58KB

Tomcat8-nio2

Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   319.75ms  113.30ms   1.57s    68.91%
    Req/Sec     6.84      3.54    20.00     82.86%
  338198 requests in 3.00m, 67.55MB read
Requests/sec:   1877.77
Transfer/sec:    384.07KB

Tomcat8-bio

Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   444.86ms  277.30ms   2.00s    74.37%
    Req/Sec     5.46      3.50    20.00     58.72%
  231600 requests in 3.00m, 46.28MB read
  Socket errors: connect 0, read 0, write 0, timeout 2871
Requests/sec:   1285.93
Transfer/sec:    263.12KB

Jetty9-nio
 Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   342.94ms  102.00ms 947.28ms   57.53%
    Req/Sec     6.18      3.16    20.00     65.20%
  305074 requests in 3.00m, 62.63MB read
Requests/sec:   1693.88
Transfer/sec:    356.07KB

不過wrk無法像ab 看出Latency的分布比率,而且根據過往nio 尾端炸裂的結果,的確很有可能把平均拉低,想想不對勁,再使用wrk回去測情境1 (沒有async 工作要做的)


Jetty9-nio

 Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   129.37ms  110.58ms   1.53s    86.40%
    Req/Sec    16.80      9.94   330.00     70.40%
  735275 requests in 3.00m, 139.54MB read
Requests/sec:   4082.55
Transfer/sec:    793.39KB

Tomcat8-apr

Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   164.65ms   98.23ms   1.22s    81.01%
    Req/Sec    13.14      6.54   356.00     75.63%
  674950 requests in 3.00m, 124.35MB read
Requests/sec:   3747.55
Transfer/sec:    706.99KB

Tomcat8-nio2

Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   382.19ms  319.77ms   2.00s    73.21%
    Req/Sec     7.47      5.96   150.00     83.09%
  293874 requests in 3.00m, 54.14MB read
  Socket errors: connect 0, read 0, write 0, timeout 958
Requests/sec:   1631.67
Transfer/sec:    307.80KB

結果又跟之前ab測試的結果一樣,jetty又有壓倒性勝利!?.....(再歪頭....)

所以在後端有拖慢速度的工作時,tomcat 又勝過Jetty.......


張貼留言