J2EE运行环境性能优化艺术之三
2008-01-05 18:18:53 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備胶绮崝锕傚礈濞嗘挸绀夐柕鍫濇川绾剧晫鈧箍鍎遍幏鎴︾叕椤掑倵鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝懐顦ч柣蹇撶箲閻楁鈧矮绮欏铏规嫚閺屻儱寮板┑鐐板尃閸曨厾褰炬繝鐢靛Т娴硷綁鏁愭径妯绘櫓闂佸憡鎸嗛崪鍐簥闂傚倷鑳剁划顖炲礉閿曞倸绀堟繛鍡樻尭缁€澶愭煏閸繃宸濈痪鍓ф櫕閳ь剙绠嶉崕閬嶅箯閹达妇鍙曟い鎺戝€甸崑鎾斥枔閸喗鐏堝銈庡幘閸忔﹢鐛崘顔碱潊闁靛牆鎳愰ˇ褔鏌h箛鎾剁闁绘顨堥埀顒佺煯缁瑥顫忛搹瑙勫珰闁哄被鍎卞鏉库攽閻愭澘灏冮柛鏇ㄥ幘瑜扮偓绻濋悽闈浶㈠ù纭风秮閺佹劖寰勫Ο缁樻珦闂備礁鎲¢幐鍡涘椽閸愵亜绨ラ梻鍌氬€峰ù鍥敋閺嶎厼鍨傞幖娣妼缁€鍐煥濠靛棙顥滈柣锕備憾濮婂宕掑▎鎺戝帯濡炪們鍨归敃銈夊煝瀹ュ鍗抽柕蹇曞Х椤斿姊洪幖鐐插姶闁告挻鐟╅幃姗€骞庨懞銉у幐闂佸憡鍔戦崝搴㈡櫠閺囩姷纾奸柍褜鍓熷畷姗€鍩炴径鍝ョ泿闂傚⿴鍋勫ú銈吤归悜鍓垮洭鏁冮埀顒勬箒濠电姴锕ら悧蹇涙偩濞差亝鐓涢悘鐐额嚙婵″ジ鏌嶇憴鍕伌鐎规洖宕埢搴ょ疀閹惧妲楃紓鍌氬€搁崐鐑芥⒔瀹ュ绀夐幖杈剧到閸ㄦ繃銇勯弽顐粶濡楀懘姊洪崨濠冨闁搞劍澹嗙划濠氬箮閼恒儱鈧敻鏌ㄥ┑鍡欏嚬缂併劏妫勯湁闁绘ǹ宕甸悾鐑樻叏婵犲啯銇濇俊顐㈠暙閳藉鈻庨幇顓炩偓鐑芥⒑鐠囨彃顒㈤柣顓у櫍瀹曪繝骞庨懞銉ヤ粧濡炪倖娲嶉崑鎾垛偓瑙勬礀閻栧ジ銆佸Δ浣哥窞閻庯綆鍋呴悵顐⑩攽閻樻剚鍟忛柛锝庡灣瀵板﹪宕滆閸嬫挾绮☉妯绘悙缂佺姵鐓¢弻娑㈠Ψ椤旂厧顫╅梺钘夊暟閸犳牠寮婚敐澶婃闁圭ǹ瀛╅崰鎰版⒑閼姐倕鏋庣紓宥咃躬瀵鈽夐埗鈹惧亾閿曞倸绠f繝闈涙川娴滎亝淇婇悙顏勨偓銈夊礈濞嗘挻鍋嬮柛鈩冪▓閳ь剚妫冨畷姗€顢欓崲澹洤绠圭紒顔煎帨閸嬫捇鎳犻鈧崵顒傜磽閸屾艾鈧娆㈤敓鐘茬獥婵°倕鎳庣粻浼存煙闂傚鍔嶉柛瀣ф櫊閺岋綁骞嬮敐鍡╂缂佺虎鍘搁崑鎾绘⒒娴h櫣甯涢柛鏃€娲滅划鏃堟濞磋櫕鐩畷姗€顢欓崗鍏夹氶梻渚€鈧偛鑻晶顖炴煏閸パ冾伃妤犵偞甯¢獮瀣攽閹邦亞纾婚梺璇叉唉椤骞愭搴g焼濞撴埃鍋撻柛鈺冨仱楠炲鏁傞挊澶夋睏闂備礁婀辩划顖滄暜閳哄倸顕遍柍褜鍓涚槐鎾存媴閻熸澘濮㈤悷婊勫閸嬬喖宕氶幒鎴旀瀻闁规儳鐤囬幗鏇炩攽閻愭潙鐏﹂柣顓у枛閳讳粙顢旈崼鐔哄幍闁荤喐鐟ョ€氼剚鎱ㄩ崶銊d簻闁靛濡囩粻鐐存叏婵犲啯銇濋柡灞芥嚇閹瑩鎳犵捄渚純濠电姭鎷冮崒姘ギ闂佸搫鐬奸崰鏍箹瑜版帩鏁冮柨婵嗘噽閿涙捇姊绘担鐟邦嚋缂佽瀚板畷鎴濃槈閵忕姷鍘撮梺鐟邦嚟婵參宕戦幘缁樻櫜閹煎瓨锚娴滅偓銇勯幘瀵糕姇婵炲懎锕弻锛勪沪閻e睗锝嗙箾绾板彉閭鐐茬箳娴狅箓鎸婃径濠呭帿闂傚倸鍊烽悞锕傛儑瑜版帒纾归柡鍥ュ灩缁犵娀鏌熼柇锕€鏋熸い顐f礋閺岀喖骞嗚閹界姴鈹戦娑欏唉闁哄本鐩獮姗€寮堕幋鐘点偡闂備礁鎲¢幐绋跨暦椤掑嫧鈧棃宕橀鍢壯囨煕閳╁喚娈樺ù鐘虫倐濮婃椽鎳¢妶鍛瘣闂佸搫鎳忛惄顖炲箖妤e啯鍊婚柦妯猴級閵娧勫枑濠㈣埖鍔曠壕濠氭煙閸撗呭笡闁哄懏鐓¢獮鏍垝閻熸澘鈷夐梺璇茬箰缁夌懓顫忛搹鍦<婵☆垵顕ч棄宥呪攽閻愭彃绾ч柨鏇樺灪娣囧﹪鎮界粙璺槹濡炪倖鐗楀銊╂偪閳ь剟姊婚崒姘偓鎼佹偋婵犲嫮鐭欓柟閭﹀枦婵娊鏌ゅù瀣珖缁炬崘妫勯湁闁挎繂鐗婇ˉ澶愭煟閹炬潙濮堥柟渚垮妼铻g紒瀣仢椤鈹戦垾鍐茬骇闁告梹鐟╅悰顔嘉熼崗鐓庣彴闂佽偐鈷堥崜锕€危娴煎瓨鈷掑ù锝嚽归弳閬嶆煙绾板崬浜扮€规洘鍔栫换婵喰掔粙鎸庡枠鐎殿喛鍩栭幆鏃堝箻鐎涙ɑ婢戝┑锛勫亼閸婃牕顫忔繝姘ラ悗锝庝憾閸熷懘鏌曟径娑滅濞存粍绮嶉妵鍕箻鐠鸿桨绮跺┑鈩冨絻椤兘寮婚敐澶嬫櫜闁搞儜鍐ㄧ婵°倗濮烽崑鐐垫暜閿熺姷宓侀悗锝庡枛缁秹鏌嶈閸撶喖骞冨Δ浣虹瘈婵﹩鍘搁幏娲煟閻斿摜鎳冮悗姘煎弮瀹曟洖螖閸涱喚鍘卞┑鈽嗗灥閵嗏偓闁稿鎹囬幃銏ゅ箵閹烘垹闃€婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘垿濡甸崟顖氱闁告鍋熸禒鑲╃磼閻愵剙鍔ゆい顓犲厴瀵鎮㈤悡搴n槶閻熸粌绻掗弫顔尖槈閵忥紕鍘撻梻浣哥仢椤戝懘鎮橀敃鍌涚厪闁搞儜鍐句純濡ょ姷鍋炵敮鈥崇暦閸楃儐娓婚柟顖嗗本顥$紓鍌氬€搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾閽樻繈姊洪鈧粔鎾几娴g硶鏀介柣妯挎珪閻ㄦ垹鈧鎸风欢姘跺蓟濞戙垹鐒洪柛鎰典簴婵洭姊虹粙鍖″姛闁稿繑锕㈠璇测槈濡攱鏂€闂佺硶鍓濋〃蹇斿閳ь剚淇婇悙顏勨偓鏍ь潖瑜版帒绀夐柡鍥ュ灩閻撴﹢鏌熸潏楣冩闁稿﹤顭烽弻娑㈠Ψ閵忊剝鐝栭柡宥忕節濮婄粯鎷呴崨濠傛殘闂佸湱枪椤兘骞冮悜鑺ユ櫆闁伙絽澶囬弨铏節閻㈤潧孝婵炶绠撳畷鐢稿礃椤旂晫鍘撻梺鍛婄箓鐎氼剟寮抽悢鍏肩叆婵炴垶鐟ч惌鎺撴叏婵犲洨绱伴柕鍥ㄥ姍楠炴帡骞嬪⿰鍐╃€抽梻鍌欑閹诧繝鎮烽妷锔绘闁归棿绀侀悡婵嬫煙閻愵剚鐏遍柛顐邯閺屾盯顢曢妶鍛亖闂佸憡蓱閹倿寮婚敐鍫㈢杸闁哄洨鍋橀幋椋庣磼缂併垹骞栭柣鏍帶閻g兘骞嬮敃鈧粻濠氭偣閸ヮ亜鐨洪柣銈傚亾婵犵數鍋犻幓顏嗗緤娴犲绠熼柨鐔哄Т绾捐銇勯弽顐沪闁抽攱鍨归惀顏堫敇閻愭潙娅f繛瀛樼矊缂嶅﹪骞冪捄琛℃闁哄诞鍐ㄐ曢梻浣虹《閺備線宕戦幘鎰佹富闁靛牆妫楃粭鎺楁煕閻曚礁浜伴柟顖氬暙鐓ゆい蹇撴噽閸樺憡绻涙潏鍓у埌婵犫偓鏉堛劍娅犳い蹇撶墛閻撳啴鎮峰▎蹇擃仼闁诲繑鎸抽弻鐔碱敊閻e本鍣伴悗娈垮枛閻栧ジ鐛€n喗鍋愰弶鍫厛閺佸洭姊婚崒姘偓椋庣矆娴i潻鑰块弶鍫涘妿娴犳岸姊绘担渚敯濠殿喓鍊楅崚鎺撴償閵娿儳顦梺鍦劋椤ㄥ懐鐚惧澶嬬厱妞ゆ劑鍊曢弸搴∶归悩鐑橆仩缂佽鲸鎸婚幏鍛村礈閹绘帒澹嶆俊鐐€栧ú妯荤箾婵犲洤鏋侀柛鎰靛枛绾惧吋绻涢幋鐐跺妤犵偛鐗撳缁樻媴閸涘﹥鍎撳┑鐐茬湴閸ㄨ棄鐣峰┑鍡欐殕闁告洦鍓欓埀顒€鐖奸弻锝呂熼懖鈺佺闂佺粯鎸诲ú鐔煎蓟閻斿吋鍤嬫い鎺嗗亾濠碉紕鍘ч湁婵犲﹤瀚崝銈夋煃鐟欏嫬鐏撮柡浣哥Ч瀹曠喖顢曢埄鍐╃窔闂傚倷鑳舵灙闁挎洏鍎甸幃褔鎮╅懠顒佹濠电娀娼ч鍡涘疾濠靛鐓冪憸婊堝礈閻旂厧鐏抽柨鏇炲€搁柨銈嗕繆閵堝倸浜鹃梺缁樺笒閻忔岸濡甸崟顖氱鐎广儱鐗嗛崢锛勭磽娴e搫孝濠⒀傜矙閸┾偓妞ゆ巻鍋撻柛妯荤矒瀹曟垿骞橀弬銉︽杸闂佺粯枪娴滎剛绮i弮鍫熺厱閻庯綆鍋掑▓鏃堟煃鐟欏嫬鐏存い銏$懅濞戠敻鎮滈悾灞藉冀濠电姷鏁搁崑娑㈠箯閹寸姴绶ら柛顭戝暎閿濆绠涢柡澶庢硶椤斿﹪姊洪悷鏉挎毐缁剧虎鍙冨畷浼村箻鐠囪尙顔嗛梺缁樶缚缁垶宕甸幋锔界厾缂佸娉曟禒娑欐叏閿濆棗濮嶆慨濠傤煼瀹曟帒顫濋钘変壕闁绘垼濮ら崵鍕煠閸濄儲鏆╁ù鐘崇缁绘繈鎮介棃娑楃捕濡炪倖娲﹂崣鍐ㄧ暦濡も偓铻e〒姘煎灠濞堛劌顪冮妶鍡楀闁稿﹥鐗滈埀顒佺濮樸劑鍩€椤掑倹鍤€濠㈢懓锕畷浼村冀瑜夐弸鏃堟煏婵犲繐顩紒鈾€鍋撻梻浣圭湽閸ㄨ棄岣胯閻楀海绱撴担鍝勪壕婵犮垺岣跨划鏃堟偡闁箑娈ㄩ梺鍝勮閸庤京绮婚悽鍛婄厵闁绘垶岣跨粻姗€鏌涢悙鍨毈闁哄矉缍侀幃鈺呮倻濮楀棔鍝楅梺璇茬箰缁诲牓宕濆畝鍕垫晩闊洦绋戝敮閻熸粌顦靛畷鎴﹀箻閼搁潧鏋傞梺鍛婃处閸撴瑧鍠婂鍛斀闁宠棄妫楁禍婵堢磼鐠囨彃鈧潡鏁愰悙鍓佺杸婵炴垶鐟﹂崕顏堟⒑闂堚晛鐦滈柛姗€绠栭弫宥呪堪閸愶絾鏂€闂佸疇妫勫Λ妤呮倶閻樼粯鐓欑痪鏉垮船娴滀即鏌ㄥ┑鍫濅粶妞ゆ挸銈稿畷鍫曞煛閸愯法闂繝鐢靛仩閹活亞绱炴笟鈧棢闁规崘顕х粈澶屸偓骞垮劚椤︿即鎮″▎鎴犵<閻庯綆浜炴禒銏ゆ煛閸℃稐鎲鹃柡宀嬬秮閺佹劙宕惰楠炲螖閻橀潧浠滄い鎴濐樀瀵偊宕橀鑲╁姦濡炪倖甯掗崐缁樼▔瀹ュ應鏀介柣妯虹-椤f煡鏌涚€e墎绉柡灞剧洴婵$兘骞嬪┑鍡樻婵°倗濮村ú顓㈠箖濡ゅ啯鍠嗛柛鏇ㄥ墮绾板秶绱撴担鍓叉Ч闁瑰憡濞婇崹楣冨籍閸繄顦ㄥ銈嗘煥濡插牐顦归柡灞剧洴閸╁嫰宕楅悪鈧禍顏勎涢崟顐悑闁搞儮鏅濋敍婵囩箾鏉堝墽鍒板鐟帮躬瀹曟洟骞囬悧鍫㈠幈闂侀潧枪閸庨亶銆傚畷鍥╃<妞ゆ梻鈷堥崕蹇斻亜閹惧啿鎮戠€垫澘瀚埀顒婄秵娴滄牠宕戦幘缁樼叆閻庯絻鍔嬬花濠氭⒑閻熺増鎯堢紒澶婄埣钘濋柨鏃堟暜閸嬫挸鈻撻崹顔界亪闂佽绻戠换鍫ュ春閻愬搫绠i柨鏇楀亾闁绘搫绻濋弻娑㈠焺閸愮偓鐣兼繛瀵稿閸ㄨ泛顫忓ú顏勫窛濠电姴娴烽崝鍫曟⒑閸涘﹥澶勯柛娆忛鐓ら柛娑橈梗缁诲棝鏌曢崼婵堢闁告帊鍗抽弻娑㈡偆娴e摜浠搁悗瑙勬礃閸旀瑥鐣疯ぐ鎺濇晝闁挎繂鎳庢导搴㈢節绾版ɑ顫婇柛銊﹀▕瀹曘垼顦崇紒鍌氱У閵堬綁宕橀埡浣插亾閸偅鍙忔俊顖滃帶娴滈箖鎮楀鐐

核心提示:作者:Steven Haines;编译:仙人掌工作室 在前面两篇文章中,我们界定了性能优化的意义(即提高并发用户数量、吞吐量和可靠性),J2EE运行环境性能优化艺术之三,定义了优化应用和应用服务器要采用的方法,现在我们要深入应用服务器,随着EJB 2.0的出现,EJB家族中增加了一种消息驱动的Bean——这是一种无状
作者:Steven Haines;编译:仙人掌工作室
在前面两篇文章中,我们界定了性能优化的意义(即提高并发用户数量、吞吐量和可靠性),定义了优化应用和应用服务器要采用的方法。现在我们要深入应用服务器,看看有哪些因素可以调整,以及调整这些因素会对应用性能产生什么影响。具体地说,我们要深入J2EE规范,结合应用服务器的实践知识,找出优化性能的办法。
一、深入了解应用服务器
当前的大多数应用服务器遵从J2EE 1.3规范,也即它们满足J2EE 1.3规范定义的所有需求。虽然J2EE规范只有一个,但本文提到的J2EE规范一般指一组相关的规范,因为J2EE规范涉及其他许多“应用编程接口”,而这些编程接口又有各自的规范。
首先我们来看看J2EE 1.3规范,它的官方地址是:http://java.sun.com/j2ee/download.Html。从J2EE规范的官方网站可以看到,当前最新的J2EE规范是J2EE 1.4 Beta 2 Implementation,不过下面我们要讨论的J2EE规范仍然是1.3,因为当前的应用服务器还不支持1.4。
J2EE规范第六章定义了必须支持的组件及其版本,表一是其概况。
表一 J2EE规范:组件及其版本
组件 版本
JDBC 2.0
EnterPRise JavaBeans(EJB) 2.0
Servlet 2.3
JavaServer Pages (jsp) 1.2
Java Messaging Service(JMS) 1.0
Java Transaction API (JTA) 1.0
JavaMail 1.2
J2EE Connection Architecture (JCA) 1.0
Authentication and Authorization (JAAS) 1.0
在J2EE规范的官方网站上可以找到上述所有技术规范的链接。下面我们将从性能的角度出发,看看它们各自的要点所在。
由于每一个应用服务器都必须支持上述API集,所以我们首先可以从一个抽象的层次来观察一个应用服务器,了解有哪些性能因素可供调整。这样,当我们看到一个具体的应用服务器时,只要找出它是如何实现规范要求的各项技术就可以了。
二、JDBC
对于数据库连接,所有的应用服务器都必须提供缓冲池机制。在应用程序中创建数据库连接是一项开销很大的操作,通常要耗费0.5到2秒的时间。因此,应用服务器缓冲了数据库连接,使得不同的应用程序、同一应用程序内的多个线程能够共享一组数据库连接,避免每次需要数据库连接时都从头开始创建连接。
通过连接池使用数据库连接的一般过程为:当某个线程需要访问数据库时,它向数据库连接池请求一个连接,然后用连接池返回的连接执行数据库操作(例如SELECT或UPDATE、DELETE命令),操作结束后再把数据库连接对象返回给连接池,以便其他组件使用该连接。由于J2EE应用支持多个并发用户,连接池的规模会极大地影响应用的性能。例如,假如一个应用的90%请求都需要访问数据库,且应用必须支持500个用户同时访问,则连接池也应当预备数量庞大的连接。
每一个应用都有不同的数据库访问要求,因此如何调整连接池中连接的数量也必须根据应用的具体情况确定。在优化应用性能的实践中,必须时刻牢记的一条重要原则是:很多时候,JDBC连接池的规模往往是对应用的整体性能表现影响最大的因素之一。
三、EJB
EJB提供J2EE应用的中间层组件,它有四种类型:实体Bean,有状态会话Bean,无状态会话Bean,消息驱动的Bean。
实体Bean和有状态会话Bean都要维持某种类型的状态信息。实体Bean可能代表数据库或查询结果的一个行????@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????隸??????????ǹ???????????????????? ????????????????,但不管怎样,从面向对象的角度来看实体Bean也是一个对象。另一方面,有状态会话Bean代表的是一种临时存储机制,它保存的数据可以跨越单个请求的范围,但不是永久保存的。一般地,在Web应用中,有状态会话Bean的生命周期总是与用户的HTTP会话相关联的。由于有状态会话Bean的本质是用来维持状态,应用服务器必须为它们提供某种缓冲机制。一些简易的应用服务器用一个单一的缓冲区来保存所有的实体Bean和有状态会话Bean,但高级一些的应用服务器会提供更复杂、完善的缓冲机制。
缓冲区的大小是预先设定的,它能够保存的对象数量也有一定的上限。当出现对某个对象的请求时,系统搜索缓冲区查找当前请求的对象:假如在缓冲区中找到了对象,就直接从内存把它返回给调用者;假如找不到,则必须从永久存储设备(例如数据库或文件系统)读取对象,把它放入缓冲区,再返回给调用者。假如缓冲区已满,处理经过就要复杂多了:缓冲区治理器必须从缓冲区移出某个对象(例如,最近最少使用的对象),以便为新的对象腾出空间。用EJB的术语来说,把某个对象移出缓冲区的操作称为钝化(passivating),把对象装入缓冲区的操作称为激活(activating)。假如一个系统中钝化操作和激活操作过于频繁,很可能导致缓冲区治理器消耗在读/写持久性存储设备上的时间远远超过其实际服务于请求的时间,这种现象称为系统颠簸(thrashing);反之,假如缓冲区治理器能够在缓冲区中找到对象并直接把它返回给用户,系统性能当然会大大提高,这种现象称为缓冲区命中(cache hit)。
调整缓冲区的时候,应当记住调整的目标是尽可能提高缓冲区命中的次数,尽可能减少系统颠簸现象。要达到该目标,首先必须深入、全面地理解应用的对象模型以及每一个对象的使用情况。
无状态会话Bean和消息驱动的Bean不能维持任何状态信息。假如一个进程在第一次操作中请求一个无状态会话Bean,在另一次操作中又请求同一类型的无状态会话Bean,系统不保证该进程会收到同一个Bean实例。这一机制带来很多方便,因为Bean治理器不必治理业务进程及其所属Bean的交互过程,它只要在请求出现时提供适当类型的Bean实例就可以了。
为了给来自业务过程的请求提供流畅的服务,Bean缓冲池必须足够大,否则的话,业务过程可能要等待一段时间才能获得Bean实例来完成其操作。假如缓冲池太小,有可能会出现许多业务过程等待Bean实例的情形;假如缓冲池太大,它会占用超出其实际需求的系统资源。
无状态会话Bean和消息驱动的Bean还有一个很有用的特点,应用服务器可以预先装入它们,而不必等到请求出现时才把它们装入缓冲池。因此,对于无状态会话Bean和消息驱动的Bean来说,两个很重要的性能选项就是缓冲池的大小和预先装入缓冲池的Bean的数量。
四、Servlet和JSP
Servlet和JSP各有独立的规范,但在运行时装入内存的实际上只有Servlet,因为JSP会被自动转换成Servlet。Servlet和JSP本身也不能在多个请求之间维持状态信息,因此应用服务器可以方便地把它们放入缓冲池,就性能而言,可供调整的两个最重要的选项也是缓冲池的大小和预先装入缓冲池的Servlet的数量。
由于JSP在装入内存之前要先经过转换和编译的工序,大多数应用服务器支持一种在部署之前预先编译JSP的机制,避免JSP页面第一次被调用时可能会出现的延迟。
Servlet(以及JSP)支持四种不同的数据保存范围(或内存区域):
◆ Page:保存在这里的数据只在单个页面范围有效。
◆ Request:保存在这里的数据在单个请求的范围内有效(在返回应答给调用者之前,数据在Servlet、JSP页面之间传递)。
◆ session:保存在这里的数据在用户会话期间一直有效(数据的有效范围跨越多个请求,直至请求超时或数据被显式地清除)。
◆ application:保存在这里的数据是全局性数据,对应用的所有Servlet和JSP都有效,除非数据被显式地清除,或者Servlet容器重新启动。
在Servlet/JSP编程中,数据存储位置的选择是非常重要的,它将极大地影响应用占用的内存总量。四种范围之中,尤以session范围对内存占用的影响最大:保存在session范围中的数据将按照并发用户数量的倍数占用内存。例如,假如应用在session范围中保存了10 KB数据,有500用户在运行应用,那么这些数据实际占用的内存将达到5 MB。仅仅占用5 MB内存当然不会使应用出现资源紧张的情形,但考虑一下,假设原来的500个用户离开了,又来了另外500个用户,这时内存占用就将达到10 MB,这种情形还有可能进一步发展下去,导致内存耗用????@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????隸??????????ǹ???????????????????? ????????????????越来越大。
HTTP是一种无状态的协议,也就是说,当客户程序连接到服务器,发出一个请求,服务器作出应答,连接就结束了。应用服务器不知道用户实际离开网站和结束会话的时间,它使用的是一种超时机制,也就是定义一个时间,假如用户在该时间范围内没有再次向服务器发送请求,则该会话就被清除。会话超时时间的设置依靠于应用、用户和要用多少内存来保留用户的会话,既不能使动作慢的用户频繁地重新建立会话,又要避免超时时间设置得过长,白白耗费内存来保留那些实际上不再需要的会话。
五、Java消息服务
JMS服务器为应用程序执行异步操作带来了方便。随着EJB 2.0的出现,EJB家族中增加了一种消息驱动的Bean——这是一种无状态的Bean,代表着由JMS消息初始化的业务过程。一个程序把消息放入JMS的目标
- ››运行于以太网的基础协议
- ››运行 Android 的魅族 M9 参数细节出炉
- ››运行 Android Emulator 的方法
- ››运行Word总默认打开上次文档怎么办?
- ››运行于 Nexus One 的完整版 Firefox 截图曝光
- ››运行于 Nexus One 的 Opera Mobile for Android 演...
- ››运行 ASP.NET 的进程帐户必须具有IIS 元数据库权限...
- ››运行两个配置完全不同的Firefox
- ››环境无关的环境
- ››运行中程序删除自己的方法
- ››运行asp.net报错信息的处理 Object Disabled
- ››运行headless Java服务器
更多精彩
赞助商链接