應(yīng)用程序服務(wù)器與Web服務(wù)基準(zhǔn)比較_第1頁(yè)
應(yīng)用程序服務(wù)器與Web服務(wù)基準(zhǔn)比較_第2頁(yè)
應(yīng)用程序服務(wù)器與Web服務(wù)基準(zhǔn)比較_第3頁(yè)
應(yīng)用程序服務(wù)器與Web服務(wù)基準(zhǔn)比較_第4頁(yè)
應(yīng)用程序服務(wù)器與Web服務(wù)基準(zhǔn)比較_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Middleware公司J2EE和.NET應(yīng)用程序服務(wù)器與Web服務(wù)基準(zhǔn)比較Middleware公司,2002年10月Middleware公司簡(jiǎn)介Middleware公司致力于提供先進(jìn)的企業(yè)Java技術(shù)培訓(xùn)與咨詢服務(wù)。公司成立于1998年,其宗旨是幫助企業(yè)向Java平臺(tái)轉(zhuǎn)移來(lái)促進(jìn)電子商務(wù)項(xiàng)目的成功。公司協(xié)助世界上一些最大型的機(jī)構(gòu)例如BEA、Oracle、Cisco、Nextel、MetLife、Sterling Commerce、Standard&Poors以及許多其它企業(yè)在Java專家的指導(dǎo)下熟練掌握平臺(tái),減少風(fēng)險(xiǎn),維持成本效益。這些專家都是有著雄厚的開(kāi)發(fā)經(jīng)驗(yàn)以及強(qiáng)大的服務(wù)器方面技術(shù)的資深工

2、程師,同時(shí)他們還是該領(lǐng)域著名的帶頭人。公司的服務(wù)包括Java2、EJB、J2EE和XML-Web服務(wù)的現(xiàn)場(chǎng)培訓(xùn),體系結(jié)構(gòu)咨詢以及遍布世界課程培訓(xùn)。這些課程在北美以外的地方都拿到了課件許可證。Middleware 公司同時(shí)創(chuàng)建了網(wǎng)站TheServerS并一直維護(hù)著該網(wǎng)站,這個(gè)網(wǎng)站是目前領(lǐng)先的在線J2EE社區(qū)。 2002 Middleware公司目錄表序言比較是公正的嗎?修訂過(guò)的Java Pet Store利用新的企業(yè)功能擴(kuò)充Pet Store.改進(jìn)的Java Pet Store應(yīng)用程序改進(jìn)后的.NET Pet Store2.0新的實(shí)現(xiàn)的比較狀態(tài)/高速緩沖存儲(chǔ)數(shù)據(jù)的一個(gè)比較擴(kuò)展的基準(zhǔn)Web應(yīng)用程序

3、基準(zhǔn)24小時(shí)分布式事務(wù)基準(zhǔn)價(jià)格性能度量Web服務(wù)基準(zhǔn)測(cè)試實(shí)驗(yàn)室與測(cè)試軟件產(chǎn)品測(cè)試Microsoft .NET測(cè)試前.NET協(xié)調(diào)以及優(yōu)化配置需要的時(shí)間.NET協(xié)調(diào)與優(yōu)化配置.J2EE測(cè)試前J2EE協(xié)調(diào)以及優(yōu)化配置需要的時(shí)間.J2EE協(xié)調(diào)與優(yōu)化配置Web應(yīng)用程序基準(zhǔn)測(cè)試測(cè)試方法24小時(shí)分布式基準(zhǔn)Web服務(wù)基準(zhǔn)Web服務(wù)基準(zhǔn)直接Web服務(wù)請(qǐng)求WEB服務(wù)基準(zhǔn)遠(yuǎn)程SOAP客戶端請(qǐng)求附錄1代碼行對(duì)比附錄2Web應(yīng)用程序基準(zhǔn)的基準(zhǔn)數(shù)據(jù)關(guān)閉圖片下載吞吐量數(shù)據(jù)事務(wù)響應(yīng)時(shí)間(秒)打開(kāi)圖片下載吞吐量數(shù)據(jù)(每秒的圖片與頁(yè)面的數(shù)量)附錄324小時(shí)分布式事務(wù)基準(zhǔn)的基準(zhǔn)數(shù)據(jù)附錄4Web服務(wù)基準(zhǔn)的基準(zhǔn)數(shù)據(jù)來(lái)自于負(fù)載源的Web

4、服務(wù)直接SOAP激活吞吐量(每秒的響應(yīng)次數(shù))響應(yīng)時(shí)間(秒)Web服務(wù)遠(yuǎn)程SOAP客戶端調(diào)用吞吐量(每秒的響應(yīng)次數(shù))響應(yīng)時(shí)間(秒)附錄5J2EE應(yīng)用程序服務(wù)器A的協(xié)調(diào)Web基準(zhǔn)分布式事務(wù)基準(zhǔn)Web服務(wù)基準(zhǔn)附錄6J2EE應(yīng)用程序服務(wù)器B的協(xié)調(diào)Web基準(zhǔn)分布式事務(wù)基準(zhǔn)Web服務(wù)基準(zhǔn)附錄7 .NET 1.0/WINDOWS 2000 服務(wù)器協(xié)調(diào)基本全局變量的修改:Web基準(zhǔn)分布式事務(wù)基準(zhǔn)Web服務(wù)基準(zhǔn)附錄8.NET 1.1/WINDOWS.NET 服務(wù)器2003協(xié)調(diào)基本全局配置的改變:Web基準(zhǔn)分布式事務(wù)基準(zhǔn)Web服務(wù)基準(zhǔn)序言2001年5月,Sun微系統(tǒng)將JavaTMPet Store作為基于J2EE

5、TM的Web應(yīng)用程序的示范實(shí)現(xiàn)推出。Sun公司宣布,JavaPetStore應(yīng)用程序闡述了一些最好的J2EE開(kāi)發(fā)經(jīng)驗(yàn),為客戶在創(chuàng)建他們自己企業(yè)的Web應(yīng)用程序時(shí)提供了一個(gè)可參考的設(shè)計(jì)模型。Sun公司在/blueprints/上提供對(duì)一系列Java Pet Store網(wǎng)址的維護(hù)。Java Pet Store 是眾多領(lǐng)先的J2EE應(yīng)用程序服務(wù)器中的一個(gè)基礎(chǔ)的例子。2001年11月,Microsoft 宣布它已經(jīng)利用Microsoft .NET Framework和C#重新實(shí)現(xiàn)了Java Pet Store,以此來(lái)表明.NET平臺(tái)相對(duì)于J2EE的優(yōu)越性。.NET Pet Shop與Sun Java

6、PetStore功能上是相同的,但它是利用Microsoft改進(jìn)的體系結(jié)構(gòu)創(chuàng)建的,這個(gè)體系結(jié)構(gòu)是為基于ASP.NET和.NET通用語(yǔ)言運(yùn)行時(shí)(CLR)的n層Web應(yīng)用程序開(kāi)發(fā)的。Microsoft已經(jīng)發(fā)布了.NET Pet Shop的基準(zhǔn)信息,以此來(lái)表明在高用戶負(fù)載下,.NET Pet Shop在性能上比Java同類產(chǎn)品有明顯的提高。這一基準(zhǔn)比較的結(jié)果是基于對(duì).NET Pet Shop性能與Oracle-發(fā)表的運(yùn)行在Oracle9iAS上的Java Pet Store基準(zhǔn)性能的比較。最新的基于.NET Pet Shop1.5的比較可以從下面的網(wǎng)址獲得:/team/compare/verites

7、t.aspx。然而,許多Java開(kāi)發(fā)商以及Sun, IBM和Oracle堅(jiān)持認(rèn)為目前的比較并沒(méi)有實(shí)際意義,因?yàn)镾un的Pet Shop應(yīng)用程序藍(lán)圖還沒(méi)有進(jìn)行性能優(yōu)化,因此并不表示它就是基準(zhǔn)。這篇報(bào)告包含了由Middleware公司得出的基于Java Pet Store最新實(shí)現(xiàn)的一系列廣泛的新基準(zhǔn)結(jié)果。這一新的實(shí)現(xiàn)在性能和伸縮性上都作了廣泛的優(yōu)化,測(cè)試是在兩臺(tái)先進(jìn)的、市面上可以買得到的J2EE應(yīng)用程序服務(wù)器上進(jìn)行的。新的實(shí)現(xiàn)同時(shí)還擴(kuò)展到支持兩個(gè)物理數(shù)據(jù)庫(kù)之間分布式適應(yīng)XA事務(wù)。此外,實(shí)現(xiàn)中還增添了一項(xiàng)基于XML的Web服務(wù)和Web服務(wù)客戶程序。為了基準(zhǔn)的比較,Microsoft也已經(jīng)向Middl

8、eware公司提供了相應(yīng)功能的修訂過(guò)的.NET Pet Shop 2.0應(yīng)用程序,該應(yīng)用程序遵循相同的規(guī)范,并且Middleware已經(jīng)完成了對(duì)它的審查工作。這個(gè)實(shí)現(xiàn)包括通過(guò)由COM+服務(wù)的.NET組件支持分布式事務(wù);同時(shí)具有修訂的J2EE實(shí)現(xiàn)中相應(yīng)的Web服務(wù)功能。本文詳細(xì)闡述兩種新實(shí)現(xiàn)的性能與伸縮性廣泛基準(zhǔn)的比較結(jié)果。比較是公正的嗎?從最初開(kāi)始,許多Java開(kāi)發(fā)者堅(jiān)持認(rèn)為原始的比較是無(wú)效的,因?yàn)镾un的版本在開(kāi)發(fā)效率和性能上都沒(méi)有進(jìn)行優(yōu)化。Java開(kāi)發(fā)者指出,Microsoft實(shí)現(xiàn)經(jīng)過(guò)了專門的性能優(yōu)化,并且與Sun的版本使用的是不同的體系結(jié)構(gòu)。例如,Java開(kāi)發(fā)者指出Microsoft在他

9、們的實(shí)現(xiàn)中使用SQL服務(wù)器貯存程序(Sun的Java版本使用的是動(dòng)態(tài)SQL,這樣使得數(shù)據(jù)庫(kù)移動(dòng)更加方便),這是這兩種不同實(shí)現(xiàn)的關(guān)鍵區(qū)別,這一區(qū)別使得.NET版本比Java同類產(chǎn)品運(yùn)行更加快速。對(duì)于這一點(diǎn),Microsoft堅(jiān)持認(rèn)為Sun的應(yīng)用程序是被作為一個(gè)J2EE企業(yè)設(shè)計(jì)最佳實(shí)踐模板推出的,因此,完全有理由認(rèn)為應(yīng)用程序在可伸縮性已經(jīng)作過(guò)了相當(dāng)好的調(diào)整。Microsoft指出它也采用類似的方法將所有.NET Pet Shop源代碼作為.NET企業(yè)設(shè)計(jì)模板的最好實(shí)踐發(fā)布;它使用貯存程序的原因基于這樣的一個(gè)事實(shí),那就是許多的企業(yè)DBA為了控制的方便更趨向于將查詢封裝在貯存程序,同時(shí)許多人甚至不接受

10、在應(yīng)用程序中的動(dòng)態(tài)SQL。然而,網(wǎng)上的Java開(kāi)發(fā)者例如TheServerS卻提出了合法性的問(wèn)題,例如: 難道J2EE版本不能夠重新編寫,對(duì)其進(jìn)行優(yōu)化以實(shí)現(xiàn)更好的性能?如果.NET版本不使用貯存程序,而是使用與J2EE版本里相同的動(dòng)態(tài)SQL,那么其性能會(huì)發(fā)生什么變化呢?對(duì)比是否可信?盡管原始的比較使用的硬件是類似的,但并不是相同的,并且比較是由Oracle和Microsoft各自的實(shí)驗(yàn)室完成的,使用的是不同版本的Mercury LoadRunner負(fù)載測(cè)試軟件和不同的測(cè)試臺(tái)。修訂過(guò)的Java Pet Store精通基于Web的J2EE應(yīng)用程序服務(wù)器的Middleware公司,根據(jù)Java社區(qū)的

11、反饋信息以及企業(yè)開(kāi)發(fā)者公布在TheServerSide上的反饋信息,使用J2EE和EJB從新創(chuàng)建了Java Pet Store,對(duì)其性能進(jìn)行了充分的優(yōu)化,確保新的實(shí)現(xiàn)僅僅包含執(zhí)行應(yīng)用程序所需要的代碼,而沒(méi)有那些只是用來(lái)表明J2EE特征的代碼。同時(shí)Middleware公司將Pet Store應(yīng)用程序的功能擴(kuò)展到支持重要的新的企業(yè)功能,這些功能包括分布式、適應(yīng)XA事務(wù)以及基于XML的Web服務(wù)。這一新的應(yīng)用程序已經(jīng)被作為Middleware的Java Pet Store 2.0公布在TheServerSide上。同時(shí)Microsoft也將他們的.NET Pet Shop升級(jí)到2.0版,增添了支持分

12、布式事務(wù)與Web服務(wù)的功能,在.NET應(yīng)用程序中使用所有的動(dòng)態(tài)SQL來(lái)代替貯存程序。Microsoft已經(jīng)將這個(gè)新的.NET Pet Shop 2.0版本發(fā)布在MSDN上,供.NET開(kāi)發(fā)者在創(chuàng)建他們自己的n層Web應(yīng)用程序的時(shí)候作為一個(gè)藍(lán)圖使用,同時(shí)Microsoft也在ServerSide上公布了源代碼。Middleware公司在新的實(shí)現(xiàn)中完成了一系列廣泛的基準(zhǔn),使用的是與應(yīng)用程序服務(wù)器和數(shù)據(jù)庫(kù)后端系統(tǒng)相同的硬件,并且采用了相同的測(cè)試臺(tái)。本文包括了這些有Middleware公司執(zhí)行并且驗(yàn)證的測(cè)試的結(jié)果。這些測(cè)試包括廣泛的J2EE應(yīng)用程序服務(wù)器協(xié)調(diào)與優(yōu)化,都是在2002年6月到9月的四個(gè)月的時(shí)

13、間內(nèi)進(jìn)行的。Middleware公司頒布的基準(zhǔn)的基本規(guī)則包括:J2EE與.NET實(shí)現(xiàn)在功能上必須100%的相同,在行為上沒(méi)有任何的區(qū)別。兩個(gè)實(shí)現(xiàn)都必須是根據(jù)最佳實(shí)踐代碼準(zhǔn)則創(chuàng)建的,這樣現(xiàn)實(shí)中的消費(fèi)者在創(chuàng)建他們自己的應(yīng)用的時(shí)候可以遵循每一項(xiàng)有效設(shè)計(jì)模式服務(wù)。每一個(gè)應(yīng)用程序在邏輯上都必須是三層實(shí)現(xiàn),使用分割好的組件來(lái)封裝中間層商業(yè)和數(shù)據(jù)訪問(wèn)邏輯。應(yīng)用程序必須設(shè)計(jì)得使它們都能夠跨多中間層應(yīng)用程序服務(wù)器群集來(lái)縮小。基準(zhǔn)必須與能夠響應(yīng)現(xiàn)實(shí)世界產(chǎn)品配置的現(xiàn)實(shí)的應(yīng)用程序服務(wù)器和數(shù)據(jù)庫(kù)配置設(shè)置一起運(yùn)行。所有的基準(zhǔn)應(yīng)用程序源代碼、數(shù)據(jù)負(fù)載以及測(cè)試腳本(包括.NET和J2EE)都必須公布在S上,這樣客戶可以復(fù)制并

14、驗(yàn)證其結(jié)果。在基準(zhǔn)中使用的源代碼、數(shù)據(jù)庫(kù)結(jié)構(gòu)以及測(cè)試腳本可以從下面的網(wǎng)得到: HYPERLINK /j2eedotnetbench/ /j2eedotnetbench/。利用新的企業(yè)功能擴(kuò)充Pet Store.為了使新的基準(zhǔn)更加易于充分理解,J2EE和.NET中的Pet Store 2.0應(yīng)用程序需要擴(kuò)展重要的新的企業(yè)功能,其中包括:分布式事務(wù)。在原始的Sun的Java Pet Store中,所有的數(shù)據(jù)庫(kù)事務(wù)都發(fā)生在單個(gè)的數(shù)據(jù)庫(kù)中,而在Pet Store 2.0基準(zhǔn)中,對(duì)于每一條命令,都有一項(xiàng)分布式的事務(wù)在兩個(gè)不同的物理數(shù)據(jù)庫(kù)之間執(zhí)行,命令信息放在一個(gè)數(shù)據(jù)庫(kù)中,而存貨統(tǒng)計(jì)在另外一個(gè)數(shù)據(jù)庫(kù)中進(jìn)行

15、。如果事務(wù)中有任何一部分失敗,那么整個(gè)事務(wù)就會(huì)再?gòu)念^開(kāi)始。創(chuàng)建這樣的應(yīng)用程序與基準(zhǔn)的目的是對(duì)使用JTA事務(wù)服務(wù)的J2EE EJB與通過(guò)利用COM+事務(wù)的.NET服務(wù)處理的.NET事務(wù)的性能進(jìn)行對(duì)比。Web 服務(wù)。Pet Store 2.0包含有一項(xiàng)以XML格式提供命令信息的Web服務(wù),這些信息包括所有命令的詳細(xì)內(nèi)容和每一條特殊命令的排列項(xiàng)。Web服務(wù)在SOAP1.1上工作。除了Web服務(wù)本身外,Pet Store 2.0還包含一個(gè)用來(lái)調(diào)用Web服務(wù)在瀏覽器中顯示結(jié)果的簡(jiǎn)單的客戶程序包。改進(jìn)的Java Pet Store應(yīng)用程序Java Pet Store應(yīng)用程序通過(guò)許多途徑來(lái)改進(jìn)增加其性能。修

16、訂后的應(yīng)用程序仍然保持具有EJB基礎(chǔ)的設(shè)計(jì)模式,類似由J2EE升級(jí)而成的可縮放n層企業(yè)應(yīng)用程序。然而,許多性能上的改進(jìn)對(duì)應(yīng)用程序進(jìn)行了徹底的性能優(yōu)化,下面將詳細(xì)的介紹這些性能的優(yōu)化。事務(wù)邊界的改進(jìn):盡管大部分原始的Pet Store應(yīng)用程序遵循應(yīng)用程序的標(biāo)準(zhǔn)訪問(wèn)模式,調(diào)用一個(gè)EJB會(huì)話,這樣完成一個(gè)事務(wù)就需要調(diào)用所有需要的EJB實(shí)體。改進(jìn)后這種方法并沒(méi)有在所有的情況下延續(xù),因?yàn)樗鼤?huì)導(dǎo)致原始的實(shí)施中某些性能的退步。例如,在某一類別所包含的產(chǎn)品報(bào)表中,三種各包含有三列的產(chǎn)品需要九次事務(wù)才能完成,而不是一次。在改進(jìn)后的Middle Java Pet Store 2.0中 ,所有的事務(wù)邊界都被修改以最

17、小化事務(wù)次數(shù)為EJB實(shí)體實(shí)現(xiàn)了一種Read-Mostly模式:在原始的PetStore中,所有的實(shí)體都是讀寫式。這種模式開(kāi)發(fā)簡(jiǎn)單,但是效率低下,因?yàn)槊恳淮尾僮鞫紩?huì)導(dǎo)致讀寫數(shù)據(jù)庫(kù)一次,即便是對(duì)靜態(tài)數(shù)據(jù)的操作也是如此。為了減輕這個(gè)問(wèn)題的影響,有些適當(dāng)?shù)膶?shí)體塊被以一種Read-Mostly的模式重新實(shí)現(xiàn)。在這種模式中,EJB實(shí)體被分成兩個(gè)部分:一部分為只讀模式,其狀態(tài)保存在事務(wù)邊界中,另一部分為寫模式;兩部分實(shí)體都分享一個(gè)引用,這個(gè)引用指向代表它們的數(shù)據(jù)的通用數(shù)據(jù)結(jié)構(gòu)。只讀實(shí)體塊界面包含有訪問(wèn)方法,而寫實(shí)體塊界面包含有改變方法;所有的數(shù)據(jù)庫(kù)讀的方法都包含在只讀模式EJB中,例如 ejbLoad(),

18、所有的寫數(shù)據(jù)庫(kù)方法都包含在寫模式EJB中,例如ejbStore()。此外,在整個(gè)實(shí)體中添加了isModified()方法,該方法可以寫入數(shù)據(jù)庫(kù)這樣所有不必要的數(shù)據(jù)庫(kù)更新都可以避免。改進(jìn)了數(shù)據(jù)庫(kù)索引的使用:改進(jìn)后在一般的搜索方面都可以使用索引,例如搜索產(chǎn)品的名字以及樣品ID。此外,原始Pet Store的表格生成腳本中的一個(gè)主要關(guān)鍵字被忽略了,而這個(gè)關(guān)鍵字往往使得詳細(xì)目錄的訪問(wèn)非常的慢。去掉多余的JNDI查找和調(diào)用初始化:每一個(gè)數(shù)據(jù)資源與EJB原參考都儲(chǔ)存在應(yīng)用程序服務(wù)器的JNDI服務(wù)中。在原始的Pet Store中,每次在這些參考被使用的時(shí)候,系統(tǒng)都要找出JNDI初始背景,然后在JNDI中查找

19、相應(yīng)的參考。兩者都僅僅只需要做一次就可以了。代碼的改變使得所有不必要的JNDI調(diào)用都省去了。動(dòng)態(tài)類只有一次初始化:在Pet Store中使用的一種在編譯的時(shí)候載入不知名的類的設(shè)計(jì)模式就是用來(lái)顯示Java的靈活性的。它通過(guò)查找將要作為字符串使用的類的名字,使用forName()操作來(lái)為該類生成實(shí)例來(lái)完成。然而,進(jìn)程的靈活性的代價(jià)就是執(zhí)行上的高耗費(fèi)。那些類的名字在編譯時(shí)已經(jīng)知道的情況下,程序?qū)⑦@一過(guò)程移除同時(shí)類的名字被編碼。在其余的情況下,程序確保類的查找和確定只執(zhí)行一次,然后只有在此類生成新的實(shí)例的時(shí)候再次執(zhí)行。就像前面提到的一樣,還有許多其他的改進(jìn):包括廣泛的使用JDBC預(yù)定義的語(yǔ)句,對(duì)字符串

20、處理的重大改變以及其它的重大改進(jìn)。然而,上面詳細(xì)列出的這些改變帶了了性能上的最大的改觀。基于J2EE應(yīng)用程序服務(wù)器A比較性的性能數(shù)據(jù),與Sun公司最初實(shí)施的Java Pet Store相比,這些優(yōu)化大致對(duì)性能提高了17倍。這一數(shù)據(jù)是根據(jù)對(duì)進(jìn)行性能平衡(對(duì)分布式事務(wù)的支持,數(shù)據(jù)的高速緩存)后原始Sun Java Pet Store與新的Middleware J2EE Pet Store 2.0的比較得出的。新的實(shí)施與舊的實(shí)施相比,性能上的提高見(jiàn)下表:圖1.原始的Sun Java Pet Store與優(yōu)化后的EJB Java Pet Store 2.0峰值吞吐量的比較改進(jìn)后的.NET Pet St

21、ore2.0和Java Pet Store類似,.NET Pet Shop 2.0的體系結(jié)構(gòu)是由Microsoft推出的3層邏輯結(jié)構(gòu),其目的是為了創(chuàng)建基于.NET的可縮放的企業(yè)應(yīng)用程序。然而,在某些關(guān)鍵的地方,代碼基礎(chǔ)已經(jīng)作了最新的改進(jìn),同時(shí)做了性能上的提高。最主要的改變包括:對(duì)于所有的數(shù)據(jù)庫(kù)訪問(wèn),使用動(dòng)態(tài)SQL代替貯存程序。這樣就消除了關(guān)于性能的提高是通過(guò)加入編譯過(guò)的貯存程序,犧牲了數(shù)據(jù)庫(kù)的輕便實(shí)現(xiàn)的爭(zhēng)論。在命令布置中使用了分布式事務(wù)。使用一種基于SOAP的Web服務(wù)來(lái)返回命令的詳細(xì)信息以及調(diào)用客戶頁(yè)面。使用數(shù)據(jù)轉(zhuǎn)發(fā)器控制代替數(shù)據(jù)柵格控制來(lái)提高性能。使用簡(jiǎn)單的數(shù)據(jù)高速緩沖存儲(chǔ)器在中間層數(shù)據(jù)緩

22、沖存儲(chǔ)器中緩沖靜態(tài)只讀產(chǎn)品信息。新的.NET Pet Shop 2.0以及其完全體系結(jié)構(gòu)白皮書(shū)可以從下面的網(wǎng)址下載:/library/default.asp?url=/library/enus/dnbda/html/bdasamppet.asp.新的實(shí)現(xiàn)的比較改進(jìn)后的Java Pet Store實(shí)現(xiàn)仍然保持忠實(shí)于Sun微系統(tǒng)發(fā)布的Model-View-Controller體系結(jié)構(gòu),充分利用包括會(huì)話塊與實(shí)體塊的J2EE核心特征的優(yōu)勢(shì)。在對(duì)軟件進(jìn)行上面詳細(xì)列出的為優(yōu)化性能而做出的廣泛修改的同時(shí),軟件方面由Sun微系統(tǒng)推薦的基本設(shè)計(jì)模式以及廣泛應(yīng)用的面向?qū)ο蟮拈_(kāi)發(fā)方式仍然保持完整無(wú)缺。這一體系結(jié)構(gòu)使

23、得用戶界面與中間層商業(yè)邏輯以及數(shù)據(jù)訪問(wèn)邏輯完全分離,后端進(jìn)程被封裝在不同的EJB中。類似的,.NET Pet Shop 2.0也采用了完全面向?qū)ο蟮膎層體系結(jié)構(gòu),為中間層和數(shù)據(jù)訪問(wèn)目標(biāo)實(shí)施了C#類。這樣它就實(shí)現(xiàn)了通過(guò)使用ASP.NET Web表單將UI與中間層商業(yè)邏輯完全的分開(kāi),而ASP.NET Web表單則通過(guò)使用一種code-behind模式(服務(wù)器端的代碼通過(guò)封裝與客戶端HTML分開(kāi))將HTML和客戶端單元與服務(wù)器端進(jìn)程單元完全分開(kāi)。Web表單模式利用了框架中提供的ASP.NET服務(wù)器控制的優(yōu)勢(shì),為大部分的UI/外觀單元服務(wù),例如列表,網(wǎng)格等。反過(guò)來(lái),服務(wù)器控制激活用C#語(yǔ)言書(shū)寫的封裝在

24、單獨(dú)的.NET集合(封裝的、可重復(fù)使用的組件)中的中間層對(duì)象,這些中間層間接的通過(guò)封裝在數(shù)據(jù)訪問(wèn)邏輯中的單獨(dú)的一套數(shù)據(jù)庫(kù)訪問(wèn)類在訪問(wèn)數(shù)據(jù)庫(kù)。狀態(tài)/高速緩沖存儲(chǔ)數(shù)據(jù)的一個(gè)比較為了使得呈現(xiàn)在用戶面前的數(shù)據(jù)庫(kù)信息盡量是最新的,必須確保兩種實(shí)現(xiàn)有相同的行為。基本上來(lái)說(shuō),核心靜態(tài)產(chǎn)品數(shù)據(jù)一般每24小時(shí)從數(shù)據(jù)庫(kù)更新一次(盡管搜索仍然會(huì)查詢數(shù)據(jù)庫(kù)關(guān)鍵字來(lái)確定高速緩沖存儲(chǔ)器中的哪些記錄需要顯示,但是主要是在運(yùn)行測(cè)試的時(shí)候在中間層高速緩沖存儲(chǔ)器查找),而消費(fèi)者數(shù)據(jù)和用戶目錄卻需要在每一位用戶登錄的時(shí)候都訪問(wèn)數(shù)據(jù)庫(kù),同時(shí)從數(shù)據(jù)庫(kù)中更新帳單信息,這也是結(jié)帳過(guò)程的一部分。此外,所有產(chǎn)品詳細(xì)目錄的數(shù)量必須精確響應(yīng)所有顯

25、示這些信息的應(yīng)用程序頁(yè)面更新后的數(shù)據(jù)庫(kù)信息。Java版使用實(shí)體塊來(lái)維持狀態(tài)數(shù)據(jù)庫(kù)信息;而.NET版使用.NET中間層高速緩沖存儲(chǔ)器來(lái)儲(chǔ)存靜態(tài)(只讀)產(chǎn)品信息,高速緩沖存儲(chǔ)器每24小時(shí)更新一次。考慮到數(shù)據(jù)的過(guò)時(shí),這種配置在產(chǎn)品間具有相同的欣慰。在這一基準(zhǔn)中,盡管.NET和J2EE應(yīng)用程序服務(wù)器都被測(cè)試出支持頁(yè)面輸出高速緩存,但是動(dòng)態(tài)頁(yè)面輸出緩存并沒(méi)有使用。這樣的決策的目的是強(qiáng)調(diào)中間層應(yīng)用程序邏輯處理的性能。擴(kuò)展的基準(zhǔn)這一基準(zhǔn)包含有三套單獨(dú)的測(cè)試,這些測(cè)試可以為兩個(gè)應(yīng)用程序.NET和J2EE性能與縮放性特征提供一個(gè)公平全面的概括。這三套基準(zhǔn)包括:Web應(yīng)用程序基準(zhǔn)24小時(shí)基準(zhǔn)分布式事務(wù)基準(zhǔn)Web服

26、務(wù)基準(zhǔn)Web應(yīng)用程序基準(zhǔn)這一基準(zhǔn)聯(lián)系應(yīng)用程序大部分的基本功能,在使用Oracle和Microsoft的測(cè)試中,兩個(gè)應(yīng)用程序的工作量相似,但并不相同。測(cè)試的目的是得到應(yīng)用程序在低用戶負(fù)載量到高用戶負(fù)載量的過(guò)程中吞吐量曲線以及測(cè)量響應(yīng)時(shí)間,不給兩種產(chǎn)品施壓以測(cè)定他們分別在2個(gè)、4個(gè)和8個(gè)CUP應(yīng)用程序服務(wù)器的配置下能夠支持的用戶數(shù)量的極限。測(cè)試腳本在有10秒緩沖時(shí)間的情況下執(zhí)行(在Oracle的原始基準(zhǔn)中,使用了20秒的緩沖時(shí)間,這就意味著與新的基準(zhǔn)相比,在相同用戶負(fù)載量的情況下,服務(wù)器所承受的壓力只有一半)。頁(yè)面輸出高速緩沖存儲(chǔ)也被停止,這樣保證服務(wù)器必須處理收到的每一條請(qǐng)求。不同用戶負(fù)載量下的

27、數(shù)據(jù)點(diǎn)都被單獨(dú)的測(cè)量,同時(shí)測(cè)量ramp-up、settledown、數(shù)據(jù)收集和ramp down時(shí)間來(lái)測(cè)定結(jié)果的精確性(每一個(gè)單獨(dú)數(shù)據(jù)點(diǎn)的總執(zhí)行時(shí)間都超過(guò)1小時(shí))。為了得到更多的信息,這套基準(zhǔn)以兩種不同的方式執(zhí)行:關(guān)閉圖片下載:這樣只有基本應(yīng)用程序服務(wù)器引擎被使用到。這一測(cè)試可以顯示產(chǎn)品操作包括服務(wù)器端腳本、會(huì)話狀態(tài)管理、對(duì)象激活以及數(shù)據(jù)庫(kù)連通性在內(nèi)的應(yīng)用程序邏輯的良好程度。打開(kāi)圖片下載:模擬一個(gè)瀏覽器高速緩沖存儲(chǔ)器這樣,每個(gè)訪問(wèn)站點(diǎn)的用戶在一次腳本重復(fù)期內(nèi)都需要下載每一張單獨(dú)的圖片一次。這一測(cè)試可以顯示應(yīng)用程序服務(wù)器作為Web服務(wù)器/應(yīng)用程序服務(wù)器的綜合工作的合適程度。注意,這一基準(zhǔn)的結(jié)果不

28、能與過(guò)去Oracle and Microsoft公布的Pet Shop的基準(zhǔn)數(shù)據(jù)比較,因?yàn)槭褂昧瞬煌臏y(cè)試腳本和緩沖時(shí)間,同時(shí)在應(yīng)用程序的某些功能方面也與原始的Pet Shop基準(zhǔn)有差別。24小時(shí)分布式事務(wù)基準(zhǔn)設(shè)計(jì)這一基準(zhǔn)的目的是為了對(duì)每一個(gè)測(cè)試產(chǎn)品的分布式事務(wù)執(zhí)行能力進(jìn)行測(cè)試。測(cè)試腳本包括用戶登錄、然后單獨(dú)的處理一條100條項(xiàng)目的命令。命令中每一條項(xiàng)目結(jié)帳過(guò)程的完成包括這個(gè)過(guò)程的最后一步就是用來(lái)激活一次分布式事務(wù)的命令的實(shí)際布置,腳本的最后是退出。每一個(gè)用戶在一個(gè)用戶會(huì)話中都會(huì)完成100次單獨(dú)的分布式事務(wù)。測(cè)試會(huì)在每一個(gè)產(chǎn)品能夠產(chǎn)生峰值吞吐量的用戶負(fù)載下運(yùn)行,并且持續(xù)24小時(shí)來(lái)觀察這種吞吐量

29、是否可持續(xù)。價(jià)格性能度量除了絕對(duì)性能度量外,每個(gè)產(chǎn)品基于4-CPU配置在24小時(shí)的運(yùn)行中的價(jià)格度量也被計(jì)算出來(lái)了。這一度量是以每次事務(wù)每秒花費(fèi)的美元數(shù)來(lái)計(jì)算的?;ㄙM(fèi)包括中間層的硬件的開(kāi)銷、應(yīng)用程序服務(wù)器軟件許可證開(kāi)銷(以4-CPU配置的每個(gè)產(chǎn)品的發(fā)布價(jià)格來(lái)計(jì)算)再加上用于應(yīng)用程序服務(wù)器的操作系統(tǒng)的購(gòu)買價(jià)格。價(jià)格度量中沒(méi)有包括數(shù)據(jù)庫(kù)許可證費(fèi)以及接下來(lái)的支持維護(hù)費(fèi)用。Web服務(wù)基準(zhǔn)這一基準(zhǔn)測(cè)量為J2EE和.NET服務(wù)的Web服務(wù)的性能特征。測(cè)試包括兩個(gè)基本的配置:Web服務(wù)的直接激活 使用100臺(tái)分布式的物理計(jì)算機(jī),每一臺(tái)模擬多用戶生成直接SOAP調(diào)用來(lái)激活Web服務(wù)。這一基準(zhǔn)測(cè)試應(yīng)用程序服務(wù)器處

30、理SOAP請(qǐng)求的能力以及作為Web服務(wù)提供者的能力。Web服務(wù)的遠(yuǎn)程激活 應(yīng)用程序服務(wù)器通過(guò)一個(gè)代理對(duì)象。在這種配置下,一共配置兩臺(tái)物理的應(yīng)用程序服務(wù)器,一臺(tái)作為一個(gè)遠(yuǎn)程Web服務(wù)提供者(就像測(cè)試a中的那樣)做工,另外一臺(tái)作為Web服務(wù)客戶端而工作。100臺(tái)物理客戶端計(jì)算機(jī)向應(yīng)用程序服務(wù)器計(jì)算機(jī)發(fā)送HTTP/HTML請(qǐng)求形成負(fù)載,應(yīng)用程序服務(wù)器計(jì)算機(jī)接著向Web服務(wù)提供者計(jì)算機(jī)發(fā)送SOAP請(qǐng)求。設(shè)計(jì)這一測(cè)試的目的是測(cè)試應(yīng)用程序服務(wù)器Web服務(wù)客戶端性能以及發(fā)送基于對(duì)象激活的遠(yuǎn)程SOAP的性能。測(cè)試實(shí)驗(yàn)室與測(cè)試軟件由Mercury交互式代表在實(shí)驗(yàn)室里安裝和配置Mercury LoadRunner

31、 7.5。測(cè)試是在大規(guī)模的實(shí)驗(yàn)室里進(jìn)行的,這種實(shí)驗(yàn)室包含有100臺(tái)客戶端計(jì)算機(jī),能夠在保證客戶端在系統(tǒng)中不成為瓶頸的同時(shí)產(chǎn)生高同步性的用戶負(fù)載。實(shí)驗(yàn)室采用CISCO吉比特主干線,每臺(tái)服務(wù)器配置兩個(gè)吉比特網(wǎng)卡,每一個(gè)網(wǎng)卡包含50個(gè)客戶端子集。這樣配置的目的是為了保證在測(cè)試的過(guò)程中Web不會(huì)成為瓶頸。在吉比特Web中同時(shí)還配置了兩臺(tái)單獨(dú)的數(shù)據(jù)庫(kù)服務(wù)器。應(yīng)用程序服務(wù)器測(cè)試在Compaq ProLiant8500 服務(wù)器上運(yùn)行,分別配有2、4、8個(gè)8550MHz的CUP和2GB的RAM(對(duì)2CPU和4CPU設(shè)置)以及4GB的RAM(對(duì)8CPU設(shè)置)。兩個(gè)數(shù)據(jù)庫(kù)也是Compaq ProLiant8500

32、服務(wù)器,每臺(tái)服務(wù)器使用8550MHz的CPU以及3GB的RAM,同時(shí)增加了光纖光學(xué)控制器來(lái)加速Compaq RAID存儲(chǔ)隊(duì)列。數(shù)據(jù)庫(kù)、客戶端和Web利用在測(cè)試過(guò)程中都被監(jiān)控以保證這些設(shè)備不會(huì)成為瓶頸。在所有的J2EE和.NET的實(shí)例中,測(cè)試會(huì)精確的報(bào)告用于應(yīng)用程序測(cè)試的應(yīng)用程序服務(wù)器軟件本身的能力。圖2.基礎(chǔ)Web應(yīng)用程序基準(zhǔn)、24小時(shí)分布式事務(wù)基準(zhǔn)以及Web服務(wù)直接SOAP激活基準(zhǔn)測(cè)試的實(shí)驗(yàn)室布置。圖3.帶有在應(yīng)用程序服務(wù)器之間遠(yuǎn)程SOAP調(diào)用的遠(yuǎn)程/代理Web服務(wù)基準(zhǔn)測(cè)試的實(shí)驗(yàn)室布置產(chǎn)品測(cè)試Microsoft .NET對(duì)于.NET產(chǎn)品,Middleware公司測(cè)量的是其商業(yè)發(fā)布的運(yùn)行在Wi

33、ndows 2000下的.NETFramework 1.0 (SP2)以及在Windows.NET Sever 2003的RC Build 3681上創(chuàng)建4322.508的.NETFramework 1.1 RC。在測(cè)試中作為后端使用的是Microsoft SQL服務(wù)器2000數(shù)據(jù)庫(kù)。.NET 1.0 and .NET 1.1在配置上的精確優(yōu)化在附錄7.8中給出。測(cè)試前.NET協(xié)調(diào)以及優(yōu)化配置需要的時(shí)間.在開(kāi)發(fā)出.NET Pet Shop 2.0后(這個(gè)應(yīng)用程序?qū)嶋H上是由一家設(shè)立在California的Microsoft解決方案提供者開(kāi)發(fā)成功的),一個(gè)Microsoft員工花了大約2個(gè)星期的時(shí)

34、間試運(yùn)行,在Middleware公司測(cè)試前(單人2周的工作量)對(duì)程序進(jìn)行包括配置設(shè)置方面的優(yōu)化。.NET協(xié)調(diào)與優(yōu)化配置.優(yōu)化就是在.NET Framework 設(shè)置的基礎(chǔ)上作些微小的變化。優(yōu)化包括:1確保數(shù)據(jù)庫(kù)正確的協(xié)調(diào),擁有足夠的存儲(chǔ)空間來(lái)為小時(shí)事務(wù)的沉重運(yùn)載量分配存儲(chǔ)空間。2對(duì)基礎(chǔ)ASP.NET設(shè)置作了修改,使得表單認(rèn)證可以與基于Windows的認(rèn)證對(duì)比,因?yàn)閼?yīng)用程序本身是一個(gè)能夠通過(guò)任何擁有標(biāo)準(zhǔn)窗口的客戶端平臺(tái)訪問(wèn)的稀少客戶應(yīng)用程序(認(rèn)證是以一個(gè)記錄有用戶名和密碼的數(shù)據(jù)庫(kù)為基礎(chǔ)的)。3將ASP.NET工作器和IO線程從25個(gè)(Windows2000的缺省設(shè)置)下調(diào)到20個(gè);微小的上調(diào)在W

35、eb服務(wù)運(yùn)行期間每一個(gè)客戶端IP被允許的Web連接的數(shù)量來(lái)保證服務(wù)器允許每個(gè)負(fù)載生成客戶端可以激活足夠多的向.NET應(yīng)用程序服務(wù)器的同步Web連接。4在Windows2000的測(cè)試中,設(shè)置ASP.NET進(jìn)程模式以便.NET應(yīng)用程序可以運(yùn)行在與IIS Web服務(wù)器一樣的進(jìn)程空間。5在Windows.NET Server 2003的測(cè)試中,使用了新的IIS 6.0進(jìn)程模式(缺省設(shè)置),因?yàn)檫@樣可以產(chǎn)生比Windows2000更好的性能,同時(shí)允許應(yīng)用程序在與HTTP服務(wù)器分離的指定的服務(wù)器進(jìn)程(應(yīng)用程序存儲(chǔ)池)中運(yùn)行。6在Windows.NET服務(wù)器下,兩個(gè)工作器進(jìn)程可以在4CPU和8CPU系統(tǒng)的I

36、IS服務(wù)管理中運(yùn)行。ASP.NET工作器進(jìn)程由Windows.NET服務(wù)器的ASP.NET自動(dòng)的產(chǎn)生與監(jiān)督,類似于利用J2EE應(yīng)用程序運(yùn)行應(yīng)用程序服務(wù)器復(fù)制的概念。J2EE對(duì)于J2EE產(chǎn)品,使用兩種領(lǐng)先的J2EE應(yīng)用程序服務(wù)器來(lái)實(shí)施測(cè)試,在這篇報(bào)告中,我們用J2EE應(yīng)用程序服務(wù)器A和J2EE應(yīng)用程序服務(wù)器B來(lái)分別表示。由于授權(quán)限制,因此Middleware不能夠透露被測(cè)試的J2EE應(yīng)用程序服務(wù)器的名字。然而,選擇的測(cè)試的產(chǎn)品代表了目前廣泛使用的、在市場(chǎng)上可以自由購(gòu)買到的企業(yè)J2EE應(yīng)用程序服務(wù)器。J2EE應(yīng)用程序服務(wù)器的測(cè)試采用Oracle 9i后端數(shù)據(jù)庫(kù),因?yàn)檫@種數(shù)據(jù)庫(kù)是每種產(chǎn)品首推使用的數(shù)

37、據(jù)庫(kù),擁有完整的J2EE/JDBC應(yīng)用程序服務(wù)器特征的支持。兩個(gè)應(yīng)用程序服務(wù)器都在RedHat Linux 7.2和Windows 2000 Advanced Server (SP2)進(jìn)行了測(cè)試。Middleware對(duì)兩個(gè)應(yīng)用程序在不同的操作系統(tǒng)下運(yùn)行作了比較,最后使用能夠?yàn)閼?yīng)用程序服務(wù)器提供最佳性能的操作系統(tǒng)的測(cè)試結(jié)果來(lái)公布。對(duì)于J2EE應(yīng)用程序服務(wù)器A來(lái)說(shuō),采用Windows 2000操作系統(tǒng)因?yàn)樵谠撓到y(tǒng)下這個(gè)應(yīng)用程序服務(wù)器的性能明顯的好于在Linux 7.2操作系統(tǒng)下;而對(duì)于J2EE應(yīng)用程序服務(wù)器B來(lái)說(shuō),在Windows 2000和Linux 7.2系統(tǒng)下性能相似,但是測(cè)試中還是選擇了W

38、indows 2000主要是因?yàn)樵谶@一系統(tǒng)下更容易監(jiān)督計(jì)算機(jī)在有負(fù)載的情況下的性能特征,而不必再使用嵌入的Windows 2000性能監(jiān)督器以至影響其性能。J2EE應(yīng)用程序服務(wù)器A和J2EE應(yīng)用程序服務(wù)器B精確配置優(yōu)化在附錄5-6中給出。測(cè)試前J2EE協(xié)調(diào)以及優(yōu)化配置需要的時(shí)間.在J2EE優(yōu)化后的應(yīng)用程序開(kāi)發(fā)成功后,兩個(gè)有經(jīng)驗(yàn)的Middleware公司的員工(全天)在進(jìn)行最后的數(shù)據(jù)點(diǎn)測(cè)量前(單人10周的工作量),花了將近5個(gè)星期的時(shí)間為J2EE應(yīng)用程序服務(wù)器A協(xié)調(diào)以及優(yōu)化配置。同時(shí)還花了將近5個(gè)星期的時(shí)間為J2EE應(yīng)用程序服務(wù)器B(單人10周的工作量)協(xié)調(diào)以及優(yōu)化配置。對(duì)兩臺(tái)J2EE應(yīng)用程序服

39、務(wù)器的調(diào)整和優(yōu)化配置過(guò)程是非常重要的,下面將會(huì)詳細(xì)的講解。J2EE協(xié)調(diào)與優(yōu)化配置J2EE應(yīng)用程序由Middleware專家根據(jù)最有經(jīng)驗(yàn)的銷售者的指導(dǎo)對(duì)測(cè)試的不同的應(yīng)用程序服務(wù)器產(chǎn)品分別作了廣泛的協(xié)調(diào)。協(xié)調(diào)包括用不同的Java Runtime Environment (JRE)以及數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序檢測(cè)產(chǎn)品以得到最優(yōu)組合;以及基本應(yīng)用程序服務(wù)器設(shè)置優(yōu)化,例如堆陣規(guī)模、高速緩沖存儲(chǔ)塊以及線程設(shè)置。在對(duì)兩個(gè)應(yīng)用程序服務(wù)器的協(xié)調(diào)過(guò)程中,首先考慮到的是將要使用的Java Runtime Environment (JRE)和JDBC驅(qū)動(dòng)器的選擇。這里,一共測(cè)試了四種JRE:SunSoft 1.3和1.4、 J

40、Rockit 3.1以及IBM 1.3。對(duì)于應(yīng)用程序服務(wù)器A來(lái)說(shuō),SunSoft 1.4是最快的,在基準(zhǔn)中可以比SunSoft 1.3產(chǎn)生多出50%的吞吐量。然而,因?yàn)镾unSoft 1.4的兼容性問(wèn)題,它能夠用于Web應(yīng)用程序和分布式事務(wù)基準(zhǔn),卻不能夠用于J2EE應(yīng)用程序服務(wù)器A來(lái)做Web服務(wù)測(cè)試,所以在這里選擇了JRockit JRE。這些JRE性能的一個(gè)重要的因素就是并發(fā)的碎片收集實(shí)現(xiàn)。如果這個(gè)特征不能夠?qū)崿F(xiàn),那么由于碎片收集導(dǎo)致的暫停就會(huì)變的多余并且會(huì)導(dǎo)致在高負(fù)載量時(shí)發(fā)生“拒絕連接”的錯(cuò)誤,因?yàn)閼?yīng)用程序服務(wù)器進(jìn)程在碎片收集的過(guò)程中會(huì)停止工作。因?yàn)楸萐unSoft JVM 1.3相比提供

41、更加優(yōu)化的碎片收集的SunSoft JVM 1.4與產(chǎn)品一起工作(在Web服務(wù)測(cè)試中例外),J2EE應(yīng)用程序服務(wù)器A會(huì)從中受益。然而J2EE應(yīng)用程序服務(wù)器B不與SunSoft JVM 1.4兼容,因此,只能夠使用SunSoft JVM 1.3。這個(gè)JVM能夠?yàn)镴2EE應(yīng)用程序服務(wù)器B提供最佳的優(yōu)化性能,盡管與SunSoft JVM 1.4相比,碎片收集仍然存在缺陷。結(jié)果發(fā)現(xiàn),應(yīng)用程序服務(wù)器B通過(guò)使用應(yīng)用程序服務(wù)器的前后Web服務(wù)(一個(gè)單獨(dú)運(yùn)行的進(jìn)程)來(lái)調(diào)節(jié)引入到應(yīng)用程序服務(wù)器本身的請(qǐng)求可以獲得更可靠的性能。這是由銷售者B為他們的應(yīng)用程序服務(wù)器推薦的實(shí)際經(jīng)驗(yàn)。通過(guò)適當(dāng)?shù)恼{(diào)節(jié)引入到應(yīng)用程序服務(wù)器的

42、并發(fā)請(qǐng)求的數(shù)目可以使得服務(wù)器在相同的負(fù)載情況下運(yùn)行更加快速與可靠,同時(shí)也可以把碎片收集的影響最小化。使用應(yīng)用程序服務(wù)器的Web服務(wù)器的確是需要配置與調(diào)整來(lái)達(dá)到最優(yōu)化的設(shè)置。Web服務(wù)器關(guān)鍵的配置變更是指現(xiàn)在在一個(gè)設(shè)置中,這個(gè)設(shè)置限定Web服務(wù)器與應(yīng)用程序服務(wù)器啟動(dòng)是并發(fā)的連接與線程的數(shù)量。這個(gè)設(shè)置被設(shè)置得相對(duì)比較低(50個(gè)線程),以保證對(duì)引入Web服務(wù)器的請(qǐng)求排隊(duì),同時(shí)保證應(yīng)用程序服務(wù)器引擎中的隊(duì)列十分小。設(shè)置的調(diào)節(jié)必須與應(yīng)用程序服務(wù)器本身線程的調(diào)節(jié)一致,而這一過(guò)程是相當(dāng)復(fù)雜的。但是最終這個(gè)設(shè)置能夠保證應(yīng)用程序服務(wù)器引擎本身在大量的請(qǐng)求壓力下永遠(yuǎn)也不會(huì)癱瘓,這樣就會(huì)運(yùn)行得更加可靠。如果Web服

43、務(wù)器的配置允許太多的用戶同時(shí)連接,那么吞吐量將隨著應(yīng)用程序服務(wù)器的不穩(wěn)定而顯著下降。即使是經(jīng)過(guò)了這樣的大量的調(diào)節(jié)后,在Web應(yīng)用和分布式事務(wù)基準(zhǔn)中,J2EE應(yīng)用程序服務(wù)器B性能仍然不能像J2EE應(yīng)用程序服務(wù)器那么好。與JTA分布式事務(wù)協(xié)作(這一特性在兩個(gè)基準(zhǔn)的測(cè)試中都被激活)性能差是一個(gè)主要的因素,這就需要使用1.3JRE代替1.4JRE。JDBC驅(qū)動(dòng)器的選擇需要基于以下標(biāo)準(zhǔn):特性的實(shí)用性:對(duì)事務(wù)的支持以及可滾動(dòng)的結(jié)果設(shè)置整體性能一共測(cè)試了四種驅(qū)動(dòng)器:數(shù)據(jù)庫(kù)提供者的驅(qū)動(dòng)器(Oracle)、應(yīng)用程序服務(wù)器提供者的驅(qū)動(dòng)器以及兩個(gè)領(lǐng)先的第三方驅(qū)動(dòng)器提供者。在排除掉那些沒(méi)有必備特征的驅(qū)動(dòng)器后,剩下的驅(qū)

44、動(dòng)器在負(fù)載下作了性能與穩(wěn)定性測(cè)試。在決定采用JRE和JDBC驅(qū)動(dòng)器后,應(yīng)用程序服務(wù)器同時(shí)作了應(yīng)用程序服務(wù)器參數(shù)和Java運(yùn)行時(shí)間參數(shù)協(xié)調(diào)。除了協(xié)調(diào)額外的服務(wù)器實(shí)例外,通過(guò)在應(yīng)用程序服務(wù)器引擎上運(yùn)行多個(gè)服務(wù)器進(jìn)程使得性能得到了很大的提高,應(yīng)用程序服務(wù)器引擎使用DNS在服務(wù)器實(shí)例間平衡負(fù)載。這種配置對(duì)兩個(gè)應(yīng)用程序服務(wù)器的大部分都是最理想的,因?yàn)樗试S使用服務(wù)器上所有的內(nèi)存,然而,每一個(gè)兼容產(chǎn)品必須單獨(dú)使用更少的內(nèi)存用于碎片收集,這就意味著周期性的碎片收集將會(huì)更加快速,減少進(jìn)程相應(yīng)的暫停時(shí)間。Web應(yīng)用程序基準(zhǔn)測(cè)試該平臺(tái)包含兩個(gè)腳本,比重各占一半,一個(gè)腳本用以模擬用戶簡(jiǎn)單的瀏覽網(wǎng)址,另一個(gè)則模擬從網(wǎng)

45、站尋找以及購(gòu)物。在只有瀏覽功能的腳本中,用戶需要如下操作:登錄網(wǎng)站主頁(yè);對(duì)1000種產(chǎn)品進(jìn)行三次任意的文字查詢,在每次查詢結(jié)果的網(wǎng)頁(yè)上,單擊“下一步”按鈕;在某種范圍內(nèi)檢驗(yàn)產(chǎn)品,重復(fù)三次;對(duì)某種產(chǎn)品具體內(nèi)容檢驗(yàn)三次(包括產(chǎn)品存貨紀(jì)錄的實(shí)時(shí)讀?。粚?duì)于具有瀏覽和查詢功能的腳本,模擬用戶需要:對(duì)1000種產(chǎn)品進(jìn)行兩次任意的文字查詢,在每次查詢結(jié)果的網(wǎng)頁(yè)上,單擊“下一步”按鈕;利用100,000個(gè)用戶中的任意ID,在網(wǎng)站注冊(cè);在購(gòu)物車中添加50000個(gè)中的兩個(gè)項(xiàng)目;檢驗(yàn),確認(rèn)賬戶信息,然后根據(jù)購(gòu)物車中的項(xiàng)目下訂單;有一半時(shí)間用戶用于退出操作,而一半時(shí)間不是這樣,于是,50%的活動(dòng)被關(guān)閉,同時(shí)放棄這5

46、0%時(shí)間使得應(yīng)用程序服務(wù)器可以處理關(guān)閉操作,關(guān)閉時(shí)間設(shè)定為10分鐘,即如果10分鐘內(nèi)沒(méi)有任何操作,則關(guān)閉之。這種做法是真正的電子商務(wù)網(wǎng)站對(duì)現(xiàn)實(shí)活動(dòng)的合理模擬。購(gòu)物完成后,執(zhí)行最后一次文字檢索。測(cè)試方法對(duì)每種產(chǎn)品進(jìn)行測(cè)試都包含兩個(gè)完全獨(dú)立的方法,一種是關(guān)閉圖像下載功能,另一種是開(kāi)通圖像下載功能(客戶端具有瀏覽器緩存)。這么做是為了更全面的了解應(yīng)用程序服務(wù)器性能,該性能包括兩個(gè)方面,一個(gè)是終端處理情景,應(yīng)用程序服務(wù)器本身不為Pet Store站點(diǎn)圖像提供服務(wù);另一個(gè)是一般情況處理情景,應(yīng)用程序服務(wù)器處理程序邏輯,同時(shí)提供下載圖片到瀏覽器的功能。注意,.NET Pet Shop和Middleware

47、 J2EE Pet Store在其運(yùn)行過(guò)程中采用不同的圖像。于是,就圖像而言,.NET Pet Shop必須加以修正,才能打開(kāi)J2EE Pet Store圖片,這樣每種測(cè)試產(chǎn)品的圖像數(shù)量以及圖像尺寸就相同了。另外,利用模擬瀏覽器緩存下載圖片時(shí),程序設(shè)置已經(jīng)被固定,因此在用戶不斷使用過(guò)程中,對(duì)每個(gè)用戶而言,同一圖片只能被下載一次,這類似于瀏覽器緩存確保圖片因速度原因而在客戶端存儲(chǔ)的實(shí)際設(shè)置。于是,網(wǎng)頁(yè)中的普通圖片,例如導(dǎo)航條,每個(gè)用戶只能下載一次,即便他作為一個(gè)模擬用戶在腳本執(zhí)行過(guò)程中訪問(wèn)多張網(wǎng)頁(yè)。但是每個(gè)模擬用戶的瀏覽器緩存都是事先固定的,因而他們必須各自重定義自己的圖像緩存。這些測(cè)試是在2個(gè)

48、,4個(gè)以及8個(gè)CPU配置上運(yùn)行的,目的在于了解當(dāng)系統(tǒng)增加CPU時(shí)應(yīng)用程序服務(wù)器功能的垂直變化。對(duì)于每個(gè)數(shù)據(jù)點(diǎn),其數(shù)據(jù)運(yùn)行由數(shù)據(jù)激增,平穩(wěn),數(shù)據(jù)收集以及數(shù)據(jù)量減小這幾個(gè)部分組成。從每個(gè)數(shù)據(jù)運(yùn)行一小時(shí)的綜合結(jié)果來(lái)看,只有當(dāng)系統(tǒng)達(dá)到穩(wěn)定狀態(tài)時(shí)才開(kāi)始數(shù)據(jù)收集。對(duì)單個(gè)產(chǎn)品而言,直到用戶登錄的響應(yīng)時(shí)間達(dá)到3秒或者更大的時(shí)候,數(shù)據(jù)點(diǎn)才被獲取,因?yàn)槊總€(gè)產(chǎn)品如果在這些用戶登錄數(shù)以上進(jìn)行測(cè)試通常出錯(cuò)。所以那些功能擴(kuò)展到承受更大用戶量的產(chǎn)品才可以收集更多數(shù)據(jù)點(diǎn)。Web應(yīng)用程序結(jié)果(關(guān)閉圖片下載功能)圖4:吞吐量峰值圖5:網(wǎng)頁(yè)平均響應(yīng)時(shí)間為3秒時(shí)的最大支持用戶數(shù)圖6:雙CPU應(yīng)用程序服務(wù)器的吞吐量曲線圖7:4CPU應(yīng)

49、用程序服務(wù)器的吞吐量曲線圖8:8CPU應(yīng)用程序服務(wù)器的吞吐量曲線Web應(yīng)用程序結(jié)果(啟動(dòng)圖片下載功能)圖9:吞吐量峰值圖10:網(wǎng)頁(yè)平均響應(yīng)時(shí)間為3秒時(shí)的最大支持用戶數(shù)圖11:2CPU應(yīng)用程序服務(wù)器的吞吐量曲線圖12:4CPU應(yīng)用程序服務(wù)器的吞吐量曲線圖13:8CPU應(yīng)用程序服務(wù)器的吞吐量曲線24小時(shí)分布式基準(zhǔn)設(shè)計(jì)分布式處理平臺(tái)的腳本是為了全面測(cè)試服務(wù)器處理大量分布式處理登錄的能力,本文的測(cè)試對(duì)象則是編寫命令。該腳本利用模擬用戶進(jìn)行如下操作:從10萬(wàn)個(gè)有效用戶名中任選一個(gè),填寫資料登錄網(wǎng)站;從5萬(wàn)個(gè)項(xiàng)目任選一個(gè)加入購(gòu)物車,并且立即訂購(gòu),每登錄一次則如此操作100次。于是對(duì)于每次登錄,檢驗(yàn)程序就需

50、要運(yùn)行100次,包括驗(yàn)證賬戶信息以及根據(jù)購(gòu)物車(一個(gè)分布式處理系統(tǒng))的內(nèi)容處理訂單;退出。需要注意的是本測(cè)試中實(shí)際分布式處理事務(wù)與總的系統(tǒng)請(qǐng)求比率為1:5,因?yàn)榉?wù)器的檢驗(yàn)程序是一個(gè)5步驟、5頁(yè)面的訂單確認(rèn)/訂單處理程序。該分布式處理平臺(tái)運(yùn)行在4CPU程序服務(wù)器上,用戶登錄數(shù)量達(dá)到最大值,所測(cè)試的每個(gè)程序服務(wù)器產(chǎn)品,其持續(xù)吞吐量如下表所述:圖14:分布式處理平臺(tái)測(cè)試結(jié)果程序服務(wù)器最大用戶登錄吞吐量每秒鐘 分布式處理事務(wù)所下訂單價(jià)格/性能1J2EE ApplicationServer A4,00059 TPS$1,305J2EE ApplicationServer B1,00018 TPS2(不

51、能支持,見(jiàn)腳注) $4,722 (見(jiàn)注釋2).NET1.0/WINDOWS20004,00079 TPS$468.NET1.1/Windows.NETServer 20036000117 TPS$31631 參見(jiàn)附錄2,應(yīng)用程序服務(wù)器系統(tǒng)硬件/軟件總表2 J2EE應(yīng)用程序服務(wù)器B 不能在分布式處理平臺(tái)連續(xù)2個(gè)小時(shí)支持最大用戶負(fù)荷。它也不能連續(xù)4個(gè)小時(shí)支持任何吞吐量,超出這個(gè)時(shí)間將會(huì)出現(xiàn)錯(cuò)誤。3 估計(jì)值,根據(jù)Windows 2000 Advanced Server價(jià)格。 Windows.NET Server 2003價(jià)格未公布。圖15:用Mercury LoadRunner分析J2EE應(yīng)用程序服

52、務(wù)器A運(yùn)行結(jié)果,顯示24小時(shí)的吞吐量。該圖描述連續(xù)24小時(shí)Web請(qǐng)求每秒鐘事務(wù)處理量。注意,實(shí)際訂單操作(分布式處理)是第二部分處理事務(wù)的驗(yàn)證量。注意:前6個(gè)小時(shí)吞吐量略有下降,而后TPS則穩(wěn)定在24小時(shí)的平均處理水平59個(gè)命令/每秒。圖16:用Mercury LoadRunner分析J2EE應(yīng)用程序服務(wù)器B運(yùn)行結(jié)果,顯示了24小時(shí)的吞吐量。該圖描述連續(xù)24小時(shí)Web請(qǐng)求每秒鐘事務(wù)處理量。注意,實(shí)際訂單操作(分布式處理)是第二部分處理事務(wù)的驗(yàn)證量。注意:分布式處理平臺(tái)的峰值吞吐量不能持續(xù)2小時(shí)以上。對(duì)參數(shù)做各種調(diào)整進(jìn)行四十多次測(cè)試表明,J2EE應(yīng)用程序服務(wù)器B處理數(shù)據(jù)庫(kù)的分布式XA兼容處理有明

53、顯難度。以上測(cè)試具有代表性的,TPS略有下降,繼而是急劇下降,上升,而后是程序服務(wù)器失敗,以至于4小時(shí)以上不能成功處理請(qǐng)求。圖17:用Mercury LoadRunner分析Microsoft .NET 1.0/Windows 2000Server運(yùn)行結(jié)果,顯示了24小時(shí)的吞吐量。該圖描述連續(xù)24小時(shí)Web請(qǐng)求每秒鐘事務(wù)處理量。注意,實(shí)際訂單操作(分布式處理)是第二部分處理事務(wù)的驗(yàn)證量。注意:吞吐量24小時(shí)持續(xù)穩(wěn)定,24小時(shí)平均命令處理的TPS是79個(gè)/秒。圖18:用Mercury LoadRunner分析Microsoft .NET 1.1/Windows.NETServer 2003運(yùn)行結(jié)

54、果,顯示了24小時(shí)的吞吐量。該圖描述連續(xù)24小時(shí)Web請(qǐng)求每秒鐘事務(wù)處理量。注意,實(shí)際訂單操作(分布式處理)是第二部分處理事務(wù)的驗(yàn)證量。注意:吞吐量24小時(shí)持續(xù)穩(wěn)定,24小時(shí)平均命令處理的TPS是117個(gè)/秒。Web服務(wù)基準(zhǔn)因?yàn)閃eb服務(wù)作為應(yīng)用程序服務(wù)器的一項(xiàng)新領(lǐng)域已經(jīng)被廣泛的推出,所以新的Pet Store基準(zhǔn)的擴(kuò)展功能就是用來(lái)檢驗(yàn)一個(gè)原型Web服務(wù)的每一個(gè)應(yīng)用程序服務(wù)器的性能。因?yàn)閃eb服務(wù)自身的規(guī)定,所以它能夠提供現(xiàn)實(shí)的測(cè)試實(shí)例來(lái)證明應(yīng)用程序服務(wù)器的性能,以通過(guò)SOAP激活基本目標(biāo)和將簡(jiǎn)單和復(fù)雜數(shù)據(jù)類型/對(duì)象串行化為XML文件的性能。Pet Store中的Web服務(wù)的功能就是將單個(gè)輸入

55、參數(shù)作為一個(gè)定單ID,然后執(zhí)行在數(shù)據(jù)庫(kù)中尋找這個(gè)定單的動(dòng)作,最后將定單對(duì)象作為XML文件返回給調(diào)用程序。定單對(duì)象本身既包含簡(jiǎn)單數(shù)據(jù)類型(字符串、整數(shù)型、小數(shù)型)也包含數(shù)組(代表某個(gè)條目詳細(xì)的排列項(xiàng))。圖19.從基于SOAP1.1的Web服務(wù)調(diào)用返回定單對(duì)象的基本XML模式intdateTimestringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringintintdecimalst

56、ringintintdecimal有兩種Web服務(wù)測(cè)試方案。第一種方案就是測(cè)試客戶端直接通過(guò)一條以HTTP方式發(fā)送(在這種情況下,MercuryLoadRunner軟件通過(guò)HTTP直接發(fā)送SOAP1.1請(qǐng)求)的SOAP消息調(diào)用Web服務(wù)。另外一種方案是LoadRunner客戶端在運(yùn)行在應(yīng)用程序服務(wù)器計(jì)算機(jī)1上的ASPX或JSP上生成一條HTML/HTTP請(qǐng)求,然后這臺(tái)計(jì)算機(jī)通過(guò)SOAP1.1的HTTP調(diào)用一個(gè)運(yùn)行在另外一臺(tái)應(yīng)用程序服務(wù)器計(jì)算機(jī)2上的遠(yuǎn)程Web服務(wù)。在第一種方案中,客戶端將會(huì)發(fā)送一條SOAP請(qǐng)求,要求在返回的定單對(duì)象中包含10000條可能的定單中隨意的一條,而每條定單都包含有5個(gè)

57、重復(fù)的行條目。這一測(cè)試對(duì)提供Web服務(wù)的單個(gè)應(yīng)用程序服務(wù)器產(chǎn)生了很大的壓力,這樣設(shè)計(jì)的目的是為了驗(yàn)證應(yīng)用程序服務(wù)器作為一個(gè)Web服務(wù)主機(jī)工作的性能以及從成千上萬(wàn)的并發(fā)用戶總提供SOAP請(qǐng)求服務(wù)的能力。在第二種方案中,LoadRunner客戶端使用ASPX或JSP頁(yè)上的一條HTTP URL,該頁(yè)帶有一個(gè)介于1到10000的請(qǐng)求定單號(hào)碼中隨意一條查詢字符串定單號(hào)碼。然后ASPX或JSP頁(yè)向另一臺(tái)提供Web服務(wù)的應(yīng)用程序服務(wù)器發(fā)送遠(yuǎn)程Web服務(wù)SOAP請(qǐng)求,得到一個(gè)返回的有效的定單對(duì)象,然后將定單對(duì)象的一部分(定單的用戶ID)格式化為JSP/ASPX頁(yè)作為HTML文件返回給客戶端。這個(gè)測(cè)試模擬一個(gè)企

58、業(yè)應(yīng)用程序整合方案,該方案中Web服務(wù)用來(lái)將多(也可能是不同的)后端系統(tǒng)聯(lián)系在一起,說(shuō)明應(yīng)用程序服務(wù)器作為一個(gè)Web服務(wù)客戶端的合適程度。在這個(gè)方案中,Web服務(wù)主機(jī)為8CPU配置,而生成遠(yuǎn)程Web服務(wù)請(qǐng)求以及將結(jié)果格式化為HTML的客戶端計(jì)算機(jī)則有2個(gè)、4個(gè)、8個(gè)CUP配置。每一種方案的測(cè)試結(jié)果圖如下所示。Web服務(wù)基準(zhǔn)直接Web服務(wù)請(qǐng)求圖20. 峰值吞吐量圖21. 最大用戶負(fù)載平均頁(yè)面響應(yīng)閾值3秒圖22.2CPU應(yīng)用程序服務(wù)器的吞吐量曲線圖23.4CPU應(yīng)用程序服務(wù)器的吞吐量曲線圖24.8CPU應(yīng)用程序服務(wù)器的吞吐量曲線WEB服務(wù)基準(zhǔn)遠(yuǎn)程SOAP客戶端請(qǐng)求圖25. 峰值吞吐量觀察結(jié)果:在J

59、2EE應(yīng)用程序服務(wù)器A和B上,8CPUWeb服務(wù)主機(jī)在大約200TPS下達(dá)到CPU飽和狀態(tài),因此,8CPU與 4CPUWeb服務(wù)器客戶端配置相比,吞吐量幾乎沒(méi)有任何的改善。在Microsoft .NET(包括Windows 2000和 Windows.NET服務(wù)器)上,Web服務(wù)主機(jī)在Web服務(wù)客戶端計(jì)算機(jī)達(dá)到飽和之前并沒(méi)有達(dá)到飽和,因此8CPU與 4CPUWeb服務(wù)器客戶端配置相比,可以提高吞吐量。圖26. 最大用戶負(fù)載平均頁(yè)面響應(yīng)閾值3秒圖27.2CPU應(yīng)用程序服務(wù)器的吞吐量曲線圖28.4CPU應(yīng)用程序服務(wù)器的吞吐量曲線圖29.8CPU應(yīng)用程序服務(wù)器的吞吐量曲線附錄1代碼行對(duì)比Middle

60、ware公司的Java Pet Store 2.0實(shí)現(xiàn)使用的了與原始的Java Pet Store(除了對(duì)性能進(jìn)行充分的優(yōu)化外)相同的基礎(chǔ)EJB推薦的體系結(jié)構(gòu)。因此,其代碼行的數(shù)量與原來(lái)的14004行的代碼相比,并沒(méi)有很大的改變。而對(duì)于.NET Pet Shop 2.0 實(shí)現(xiàn),Microsoft則做了更進(jìn)一步的優(yōu)化以減少總代碼行數(shù),同時(shí)也擴(kuò)展了一些為分布式事務(wù)和Web服務(wù)服務(wù)的新特征。新的.NET Pet Shop 2.0一共有2096行C#代碼(在1.5版本中一共有3484行代碼,新的版本減少了40%)。.NET和J2EE的版本都是完全的面向?qū)ο蟮?,都是?duì)UI層、中間層和數(shù)據(jù)層應(yīng)用程序邏輯進(jìn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論