????? 性能往往出現(xiàn)在你做容易忽略的地方!
????? 最近開(kāi)發(fā)了一個(gè)WML服務(wù)端,部署在tomcat6.0,默認(rèn)內(nèi)存64M。做壓力測(cè)試,用LR每秒跑50個(gè)用戶并發(fā),結(jié)果2小時(shí)后內(nèi)存的永久區(qū)就滿了,且不回收,查程序,感覺(jué)任何可以優(yōu)化的地方都已經(jīng)優(yōu)化了,最后窮盡的辦法,還是老樣子。最好還是感覺(jué)我們公司的測(cè)試人員NB,發(fā)現(xiàn)java.util.concurrent.ConcurrentHashMap$Segment的對(duì)象越來(lái)越多,經(jīng)網(wǎng)上資料分析,極有可能是session堆積造成的。這個(gè)時(shí)候才恍然大悟,因?yàn)閴毫y(cè)試的時(shí)候,都沒(méi)模擬新的用戶,每次訪問(wèn)服務(wù)端都會(huì)創(chuàng)建一個(gè)新的session對(duì)象,保存在服務(wù)器端,如果session有效期不過(guò)期,那么就一直保存著,知道內(nèi)存耗盡。只要知道問(wèn)題的所在,就比較容易解決問(wèn)題了。我們都知道session的過(guò)期時(shí)間是在web.wml里面設(shè)置,原來(lái)我設(shè)置了一天,現(xiàn)在改成30分鐘,不再出現(xiàn)內(nèi)容消耗的情況了,謝天謝地謝測(cè)試。
<session-config>
??<session-timeout>30</session-timeout>
?</session-config>
????? 得出的結(jié)論是,如果想保存session時(shí)間久一點(diǎn),那么設(shè)計(jì)tomcat的內(nèi)存大一點(diǎn),防止請(qǐng)求量的情況出現(xiàn)內(nèi)存耗盡。如果session在測(cè)試中用到不多或者失效性不強(qiáng),沒(méi)有必要加內(nèi)容,直接修改wen.xml即可。
???? 附上網(wǎng)上一個(gè)“專家”的分析,http://ddupnow.javaeye.com/blog/621619