測試工具:Jmeter
? ? ? ?Apache JMeter是Apache組織開發(fā)的基于Java的壓力測試工具蛀缝。用于對軟件做壓力測試裁厅,它最初被設(shè)計用于Web應(yīng)用測試,但后來擴展到其他測試領(lǐng)域滞诺。 它可以用于測試靜態(tài)和動態(tài)資源这刷,例如靜態(tài)文件、Java 小服務(wù)程序鼻弧、CGI 腳本设江、Java 對象、數(shù)據(jù)庫攘轩、FTP 服務(wù)器叉存, 等等。JMeter 可以用于對服務(wù)器度帮、網(wǎng)絡(luò)或?qū)ο竽M巨大的負載歼捏,來自不同壓力類別下測試它們的強度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測試瞳秽,通過創(chuàng)建帶有斷言的腳本來驗證你的程序返回了你期望的結(jié)果瓣履。為了最大限度的靈活性,JMeter允許使用正則表達式創(chuàng)建斷言寂诱。
? ? ? ?Apache jmeter 可以用于對靜態(tài)的和動態(tài)的資源(文件拂苹,Servlet,Perl腳本痰洒,java 對象瓢棒,數(shù)據(jù)庫和查詢,FTP服務(wù)器等等)的性能進行測試丘喻。它可以用于對服務(wù)器脯宿、網(wǎng)絡(luò)或?qū)ο竽M繁重的負載來測試它們的強度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大并發(fā)負載測試你的服務(wù)器/腳本/對象泉粉。
測試Tomcat ,因為Spring Boot默認服務(wù)器是Tomcat连霉,所以可以直接測試
第一步,打開Jmeter 配置線程組嗡靡,請求次數(shù)10000次
在線程組上添加http請求配置
配置聚合報告跺撼,查看運行吞吐量
測試三次后,取平均值讨彼,測試結(jié)果跟電腦配置有關(guān)歉井,不同電腦結(jié)果不一樣,我們只是在同一配置同一時間對比吞吐量
測試Undertow
? ? ? ?默認情況下哈误,Spring Boot 使用 Tomcat 來作為內(nèi)嵌的 Servlet 容器哩至,可以將 Web 服務(wù)器切換到 Undertow 來提高應(yīng)用性能,Undertow 是紅帽公司開發(fā)的一款基于 NIO 的高性能 Web 嵌入式服務(wù)器
· Untertow 的特點:
· 輕量級:它是一個 Web 服務(wù)器蜜自,但不像傳統(tǒng)的 Web 服務(wù)器有容器概念菩貌,它由兩個核心 Jar 包組成,加載一個 Web 應(yīng)用可以小于 10MB 內(nèi)存
· Servlet3.1 支持:它提供了對 Servlet3.1 的支持
· WebSocket 支持:對 Web Socket 完全支持重荠,用以滿足 Web 應(yīng)用巨大數(shù)量的客戶端
· 嵌套性:它不需要容器箭阶,只需通過 API 即可快速搭建 Web 服務(wù)
第一步,移除Tomcat 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
第二步戈鲁,增加Untertow 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
項目中Tomcat 服務(wù)器移除尾膊,新增了Untertow
第三步,重新啟動項目進行測試荞彼,測試結(jié)果
其實差別不大冈敛,理論上Undertow比Tomcat的吞吐量要高很多,可能與測試機器有關(guān)鸣皂,但測試效果上看還是要好一些抓谴。