SpringBoot服務器壓測對比(jetty、tomcat、undertow)


1、本次對比基礎環境信息如下:

    springboot版本1.5.10

    centos虛機4c6G,版本7.4

    centos實機2u16c40G,版本7.4,虛機運行在實機上

    ab版本2.3

    jprofiler版本9.1.1

2、壓測接口說明

    天花板:指的是一個空接口,沒有任何實現,直接返回,如


@RequestMapping(value = "/test", method = RequestMethod.GET)
public void test() {
		
}

    服務接口:指的是具有一定業務代碼的接口,連接數據庫/Redis然后返回json數據

    異步接口:指的是開啟了http異步

3、壓測過程

    JETTY

    先以Jetty開始,這里通過優化參數來不斷摸底。以下是參數說明:

        jettyMin:最小連接數

        jettyMax:最大連接數

        mvcCore:線程池core數量

        mvcMax:線程池最大量

        mvcQueue:線程池隊列大小

    大致結果如下:

JETTY天花板(無異步)
jettyMin 50 100 200 300
jettyMax 600 600 600 600
mvcCore 50 50 50 50
mvcMax 200 200 200 200
mvcQueue 100 100 100 100
結果 2090 2116 2374 2100

 

JETTY天花板(無異步)
jettyMax 400 600 800
jettyMin 200 200 200
mvcCore 50 50 50
mvcMax 200 200 200
mvcQueue 100 100 100
結果 1655 2170 2000
JETTY天花板(異步)
jettyMax 600 600 600
jettyMin 200 200 200
mvcCore 50 100 200
mvcMax 200 200 200
mvcQueue 100 100 100
結果 1500 1600 1450

 

JETTY天花板(異步)
jettyMax 600 600 600
jettyMin 200 200 200
mvcCore 100 100 100
mvcMax 200 400 600
mvcQueue 100 100 100
結果 1600 1700 1550
JETTY天花板(異步)
jettyMax 600 600 600
jettyMin 200 200 200
mvcCore 100 100 100
mvcMax 400 400 400
mvcQueue 100 200 300
結果 1600 1700 1600

     以下是通過工具預估最佳線程數,然后修改優化參數的結果:

JETTY天花板(無異步)
jettyMax 600 52  
jettyMin 200 52  
mvcCore 52 52  
mvcMax 52 52  
mvcQueue 199 199  
結果 1520 1600  
JETTY業務接口(異步)
jettyMax 600    
jettyMin 200    
mvcCore 52    
mvcMax 52    
mvcQueue 199    
結果 1719    
JETTY業務接口(無異步)
jettyMax 600    
jettyMin 200    
mvcCore 52    
mvcMax 52    
mvcQueue 199    
結果 2000    

    通過以上結果發現一個問題,開啟異步HTTP后壓測的結果均不如不開啟HTTP異步的結果。

    TOMCAT

    通過切換成tomcat再按照以上過程壓測,發現HTTP和tomcat才是天生一對,組合壓測下的結果和Jetty不開啟異步的結果差不多。這里不再重復貼出數據表格。

    UNDERTOW

    通過Jetty和tomcat的壓測結果發現,HTTP異步並不一定會提升程序性能,只有在特定的條件下才會起到正面的效果,如應用服務器為非NIO時。而undertow和jetty一樣是NIO,所以這里不再對比異步非異步,直接只測非異步。優化參數只有兩個:

    ioThreads:cpu核數

    workerThreads:工作線程數(可以通過工具預估出來)

    以下是數據。

UNDERTOW業務接口(無異步)
ioThreads 4    
workerThreads 52    
       
       
       
結果 2200    
UNDERTOW天花板(無異步)
ioThreads 4    
workerThreads 52    
       
       
       
結果 3100    

    4、jprofiler圖標對比

    jetty

    tomcat

        UNDERTOW

5、附最佳線程數預估工具

    GITHUB地址https://github.com/sunshanpeng/dark_magic  原文博客:http://ifeve.com/how-to-calculate-threadpool-size/

    Undertow使用&優化:https://www.jianshu.com/p/e625b8aa0e80

原文鏈接:https://my.oschina.net/shyloveliyi/blog/2980440


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM