Tomcat & Jboss/wildfly 性能比對之【測試篇】

Jboss(準確地講應(yīng)該是Jboss AS)是一款基于 J2ee 的免費開放源碼應(yīng)用服務(wù)器,由 Jboss 社區(qū)維護(注意區(qū)別于 Jboss 的另一款商用應(yīng)用服務(wù) JBoss EAP,由 Radhat 提供商業(yè)支持)。

它是一個管理 EJB 的容器,嚴格講 Jboss 核心服務(wù)僅支持 EJB 服務(wù)器,是不包括 JSP 和 Servelt 的 web 容器,所以 Jboss 之前一直綁定 Tomcat 作為 Web 容器,但 Web 容器畢竟是應(yīng)用服務(wù)器中最重要的模塊之一,更為了滿足 Jboss應(yīng)用服務(wù)的集成需要,所以到 Jboss 8.0(改名叫 wildfly)的版本后,Jboss 終于有了屬于其開源組織旗下的一款自己的 Web 容器“Undertow”。

現(xiàn)在問題來了:同樣是免費開源,做為深受廣大人民群眾喜愛的 Web 應(yīng)用服務(wù)龍頭“Tomcat”,和基于 Undertow 的 Jboss/wildfly,在做為 Servelt 容器應(yīng)用方面孰優(yōu)孰劣?

秉著不做吃瓜群眾,絕知此事要躬行的原則,作者以 tomcat v8.0.26和 Jboss v9.0.0(wildfly v9.0.0)為例,親測了一把。

1、測試方法簡述

1)系統(tǒng)分析及需求收集

現(xiàn)今大多數(shù)互聯(lián)網(wǎng)應(yīng)用系統(tǒng)的數(shù)據(jù)流轉(zhuǎn)為:

首先各種終端(PC/手機/Pad)發(fā)起請求(http 或者 scoket 協(xié)議);

其次經(jīng)過各種“軟硬件大拿”們的路由調(diào)度優(yōu)化,到達系統(tǒng)定義的接入層應(yīng)用系統(tǒng)服務(wù)器(Tomcat/Jboss 應(yīng)用處);

最后到后臺的核心業(yè)務(wù)應(yīng)用服務(wù)器(Tomcat/Jboss 應(yīng)用處)。

應(yīng)用系統(tǒng)之間的消息流轉(zhuǎn)用的一般是基于一些開源 RPC 框架(Dubbo,Protobuf)的遠程調(diào)用。

因此有以下兩個特點:

Tomcat/Jboss 不作用靜態(tài)頁面(.htm,.jsp)的服務(wù)器,該功能由 nginx 承擔(dān)

Tomcat/Jboss 獨立部署,不進行 tomcat/jboss 服務(wù)器間的(支持實時服務(wù)器間 session,context 復(fù)制)集群

綜上Tomcat/Jboss 的性能優(yōu)化比對測試,僅驗證其作為 Servelt 容器的能力即可。

2)測試軟硬件環(huán)境

物理環(huán)境

使的4*cpu+16G內(nèi)存的虛擬機

軟件環(huán)境

操作系統(tǒng):linux(Oracle Linux Server release 6.5)

軟件版本:tomcat8.0.26,Jboss9.0.0

3)性能參數(shù)

JVM內(nèi)存:8G(-Xms512m –Xmx8192m)

maxThreads:測試512/1024/2048三檔

enableLookups:固定為false

acceptCount:固定為512/1024

connectionTimeout:固定為30000

工作模式:NIO/APR

ax_tw_buckets = 60000

4)Servelt測試樁及部署

測試樁不進行復(fù)雜的業(yè)務(wù)處理,僅進行簡單的參數(shù)解析及回顯:

性能測試工具的調(diào)用方調(diào)度式:

http://192.168.xxx.xxx:3030 /loginServelt?username=1&password=1

2、測試內(nèi)容

相同壓力下,Tomcat/Jboss 的處理效率(TPS,響應(yīng)時間)。

以100/200/300/500/1000/2000用戶分檔進行并發(fā)壓測,觀察 tomca t和 Jboss 在各檔配置時的處理效率,記錄 TPS、響應(yīng)時間、內(nèi)存占用、CPU。

3、測試數(shù)據(jù)及分析

1)測試數(shù)據(jù)

說明:

tomcat 采用的是最優(yōu)的 apr 模式,Jboss 9.0.0內(nèi)置的是 undertow,只有 NIO 模式一種;

失敗的原因,從錯誤信息看,全部是連接服務(wù)器失敗,說明在高負荷情況下,服務(wù)器來不及接收新的連接請求造成的;

上述測試采用的是用測試工具進行的壓測,同時采用 AB 工具進行過測試(測試結(jié)果和上述工具的測試結(jié)果一樣),具體數(shù)據(jù)參見附錄1:AB測試記錄;

本部分比對測試過程中,網(wǎng)絡(luò)出現(xiàn)較明顯延時開銷,致總體 TPS 不高,但這也會比較符合實際生產(chǎn)的環(huán)境。

2)比對結(jié)論

相同配置及被測業(yè)務(wù)模式下,Jboss 處理效率低于 tomcat 約30%左右;

(注意:實際是 Jboss 約比 Tomcat 多花了10ms 左右,案例中在測試業(yè)務(wù)耗時很短的情況下看起來差異很大,而實際業(yè)務(wù)耗時比較大的情況下,比如業(yè)務(wù)需要1s,那么 Jboss 只低約10ms/1000ms=1%左右)

相同的業(yè)務(wù)處理壓下(TPS)下,tomcat 占用的CPU略低于 Jboss;

Tomcat 上用的內(nèi)存小于 Jboss(這點可忽略不計,兩者都占用不大,內(nèi)存又便宜);

在高并發(fā)下,Jboss 有更高的失敗率。

結(jié)論:Tomcat 在處理效率、CPU 占用、內(nèi)存占用上、業(yè)務(wù)成功率均優(yōu)于 Jboss。

結(jié)束語

以上 Tomcat/Jboss 的性能比對測試結(jié)果:“Tomcat 在處理效率、CPU 占用、內(nèi)存占用上、業(yè)務(wù)成功率均優(yōu)于 Jboss;” 僅驗證其作為 Servelt 容器的能力,所測試為一定條件下單點單機的測試數(shù)據(jù),不涉及 Tomcat/Jboss 的集群性能測試(集群都交給 RPC 框架本身自己定義處理)。

此外文中測試結(jié)論的得出均基于特定測試環(huán)境下所得的客觀測試數(shù)據(jù),僅做參考,不做為通用型技術(shù)選型的一般性依據(jù)。

附錄:

本文作者:黃方敏(點融黑幫),畢業(yè)于湘潭大學(xué),現(xiàn)就職于點融網(wǎng)工程部Infra團隊任性能測試開發(fā)工程師。曾任職于思科網(wǎng)訊,文思海輝,多年軟件測試領(lǐng)域經(jīng)驗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ?摘自:https://help.aliyun.com/document_detail/29341.html?sp...
    許你一枝花閱讀 2,037評論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評論 6 342
  • 青絲作罷, 又憶年少爛漫, 風(fēng)華逝盡,唯有 獨獨寐。 鳳眼金絲釵, 流云紋鏡滿, 誰人對鏡坐, 華發(fā)無人綰。 秋末...
    不思中州晚閱讀 375評論 7 12

友情鏈接更多精彩內(nèi)容