實(shí)例解析Linux平臺(tái)的JVM性能評(píng)測(cè)
本文向大家簡(jiǎn)單介紹一下Linux平臺(tái)的JVM性能評(píng)測(cè),在Linux平臺(tái)上,Sun的Hotspot性能很一般,不如同樣環(huán)境下Windows下的Hotspot表現(xiàn)好。
Linux平臺(tái)的JVM性能評(píng)測(cè)
在Linux平臺(tái)上,Sun的Hotspot性能很一般,不如同樣環(huán)境下Windows下的Hotspot表現(xiàn)好;IBM的JVM無(wú)論在Linux還是Windows平臺(tái)性能很卓越,不過(guò)IBM主要還是把精力放在Linux/Unix平臺(tái)上,它的Windows平臺(tái)的JVM到1.3.1性能口碑很好,但是以后就沒(méi)有再單獨(dú)發(fā)布新版本,因此從IBM網(wǎng)站也只能下載到Windows下1.3.1版本JVM,至于Linux平臺(tái)下的1.4.1版本的JVM性能表現(xiàn)尚待檢驗(yàn);
而BEA的JRockit針對(duì)Intel的CPU進(jìn)行了指令優(yōu)化,作為服務(wù)器的JVM來(lái)說(shuō)在業(yè)界似乎一向評(píng)價(jià)頗好,但是我還不清楚JRockit在Linux上表現(xiàn)如何。這次我是要在SuSELinux上跑jroller,因此主要關(guān)注3個(gè)JVM在我的SuSE9上面的性能表現(xiàn)。
因?yàn)橐鳛榫W(wǎng)站服務(wù)器來(lái)使用,因此我還比較關(guān)注JRockit和IBMJVM的License問(wèn)題,分別查了一下BEA和IBM的協(xié)議,看到這兩個(gè)JVM都是可以免費(fèi)使用,不管是開發(fā)目的,還是產(chǎn)品目的,如果是購(gòu)買了其公司其他產(chǎn)品,那么可以得到免費(fèi)的JVM方面的support,如果只是從網(wǎng)站下載使用其JVM,那么就沒(méi)有免費(fèi)的support,但是有商業(yè)付費(fèi)的support。
在TSS上面有一個(gè)關(guān)于JRockit的Thread:
http://www.theserverside.com/news/thread.tss?thread_id=22895
IBMJVM處理數(shù)學(xué)運(yùn)算速度最快,BEAJVM處理大量線程和網(wǎng)絡(luò)socket性能***,而SunJVM處理通常的商業(yè)邏輯性能***。不過(guò)Hotspot的Servermode被報(bào)告有穩(wěn)定性的問(wèn)題。而他尚未有機(jī)會(huì)嘗試一下***的JRockit。
架設(shè)Blog系統(tǒng)我最關(guān)心的其實(shí)還是JVM的多線程處理能力和網(wǎng)絡(luò)socket處理能力,因此使用著名的VolanoMarkBenchmark進(jìn)行了這方面的測(cè)試
VolanoMarkBenchmark是一個(gè)JVM性能測(cè)試程序,任何人都可以自己下載來(lái)測(cè)試:
http://www.volano.com/benchmarks.html
這是2003年5月的測(cè)試報(bào)告
http://www.volano.com/report/
我下載了VolanoMarkBenchmark,在Server上面分別安裝了Linux版本的JRockit1.4.2,SunJDK1.4.2,和IBMJDK1.4.1。修改了一下VolanoMark的測(cè)試腳本(有些小問(wèn)題)。VolanoMark測(cè)試主要是運(yùn)行Volano自己開發(fā)的一個(gè)chat的webapplication,然后從客戶端進(jìn)行壓力測(cè)試,統(tǒng)計(jì)webapplication單位時(shí)間內(nèi)處理并發(fā)請(qǐng)求的能力。測(cè)試主要有兩項(xiàng):
1、Loopback測(cè)試
不進(jìn)行網(wǎng)絡(luò)傳輸測(cè)試,因此可以測(cè)試出來(lái)JVM的performance
2、Network測(cè)試
通過(guò)網(wǎng)絡(luò)進(jìn)行測(cè)試,模擬真實(shí)環(huán)境的JVM處理能力。
服務(wù)器軟硬件環(huán)境:
服務(wù)器CPU:超線程1.8GzXeonCPU×2
操作系統(tǒng):SuSELinux9.0Professional
LinuxKernel版本:2.4.21-202-smp4G
Glibc版本:glibc-2.3.2-88
Volano使用的是Tomcat4.0.3來(lái)做AppServer。這也符合我的選擇,我正準(zhǔn)備使用Tomcat來(lái)做AppServer。每個(gè)測(cè)試分別執(zhí)行三次,測(cè)試結(jié)果如下:
1、性能測(cè)試(Loopback)
Performance
VolanoMarkversion=2.5.0.9
Messagessent=20000
Messagesreceived=380000
Totalmessages=400000
代碼:
SunJDK1.4.2
- Averagethroughput=8848messagespersecond
- Averagethroughput=8060messagespersecond
- Averagethroughput=8046messagespersecond
代碼:
IBMJDK1.4.1
- Averagethroughput=15620messagespersecond
- Averagethroughput=17665messagespersecond
- Averagethroughput=15666messagespersecond
代碼:
BEAJRockit1.4.2
- Averagethroughput=16549messagespersecond
- Averagethroughput=15564messagespersecond
- Averagethroughput=15736messagespersecond
#p# 2、網(wǎng)絡(luò)服務(wù)處理能力測(cè)試
VolanoMarkversion=2.5.0.9
Messagessent=10000
Messagesreceived=190000
Totalmessages=200000
代碼:
BEAJRockit1.4.2
- Averagethroughput=3938messagespersecond
- Averagethroughput=3290messagespersecond
- Averagethroughput=3648messagespersecond
- Averagethroughput=3328messagespersecond
代碼:
SunJDK1.4.2
- Averagethroughput=2225messagespersecond
- Averagethroughput=2163messagespersecond
- Averagethroughput=2080messagespersecond
代碼:
IBMJDK無(wú)法執(zhí)行測(cè)試
測(cè)試總結(jié):
在***項(xiàng)性能測(cè)試中,3個(gè)JVM都完成測(cè)試,但是正如上面Purdy提到的一樣,Sun的HotspotJVM在servermode情況下會(huì)出錯(cuò),必須使用clietmode。在性能測(cè)試結(jié)果來(lái)看,IBM的JVM和BEA的JVM旗鼓相當(dāng),分值都相當(dāng)高,而Sun的JVM性能差了幾乎一倍。
在第二項(xiàng)網(wǎng)絡(luò)服務(wù)測(cè)試中,IBM的JVM無(wú)法完成測(cè)試,會(huì)出現(xiàn)段地址錯(cuò)誤,JDK版本和glibc版本不兼容造成的。Sun的JVM也需要修改一下JVM參數(shù)才可以順利執(zhí)行,從測(cè)試結(jié)果來(lái)看,BEA的JRockit仍然***于Sun的Hotspot。
經(jīng)過(guò)本次測(cè)試,已經(jīng)決出了優(yōu)勝者,就是BEA的JRockit1.4.2。當(dāng)然JRockit也有一些不足,例如在內(nèi)存消耗和CPU負(fù)載方面要明顯高于另外兩個(gè)JVM。
JRockit除了性能上的優(yōu)勢(shì),也有著豐富的性能調(diào)整選項(xiàng)和一個(gè)圖形監(jiān)控工具,和一個(gè)性能報(bào)告分析工具,這對(duì)于JVM的調(diào)優(yōu)有著非常大的幫助,鑒于性能方面的優(yōu)勢(shì),以及可管理性方面的豐富功能,我決定選擇JRockit作為Tomcat的JVM來(lái)使用。
【編輯推薦】