JSP的Request session的有效時間應合理設定

來源:互聯網
上載者:User

之前寫了個簡單的jsp做壓力測試,沒想到出現的一個問題是當壓力比較大的情況,運行比較久的話會出現一個現象,就是jvm的記憶體幾乎被耗盡,用jprofiler查看會發現是有一個ConcurrentHashMap對象的記憶體一直在增長,而且沒有釋放的跡象,隨後進入Debug模式,跟蹤尋找都有誰new了ConcurrentHashMap,因為測試情境中是個非常簡單的jsp頁面,發現只有jsp的Request session會建立這個ConcurrentHashMap,很久沒寫jsp了,猜測是request session的預設逾時時間太長,所以導致高壓力下(200並發,總共連續訪問50萬次,jvm記憶體1G)會出現記憶體一直沒有回收的問題,後來列印了一下request session的預設逾時(AS是jboss 4.2.2),是半小時,如果這樣的話確實是會有造成上面記憶體一直被佔用的現象。
這個jsp是這樣的,非常簡單:
 

<%@ page contentType="text/html;charset=GBK" %>
Just Test.

造成這個問題的具體原因需要結合session的機制來講了,講session機制的文章相當多,感興趣的話可以參見以下兩篇文章:

http://www.builder.com.cn/2007/1123/650439.shtml

http://bbs.chinaunix.net/viewthread.php?tid=1178466

這個問題怎麼說呢,只能說session用的時候要非常注意吧,畢竟是消耗記憶體資源的,而且通常session都不會去配置成即時invalidate,都是有一定的逾時時間的,在這樣的情況下,如果在逾時時間範圍內出現高訪問量的話,是很有可能會造成問題的,因此逾時時間的合理設定非常重要。

ps: 好久沒玩過jsp和session了,確實沒太注意這種狀況,對於熟悉jsp和session機制的人來說也許這是常識
了,^_^,見諒見諒。
如果頁面上不需要session的話,可以這麼做:
<%@ page session="false" %>
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.