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

          之前寫了個簡單的jsp做壓力測試,沒想到出現(xiàn)的一個問題是當壓力比較大的情況,運行比較久的話會出現(xiàn)一個現(xiàn)象,就是jvm的內(nèi)存幾乎被耗盡,用jprofiler查看會發(fā)現(xiàn)是有一個ConcurrentHashMap對象的內(nèi)存一直在增長,而且沒有釋放的跡象,隨后進入Debug模式,跟蹤查找都有誰new了ConcurrentHashMap,因為測試場景中是個非常簡單的jsp頁面,發(fā)現(xiàn)只有jsp的Request session會創(chuàng)建這個ConcurrentHashMap,很久沒寫jsp了,猜測是request session的默認超時時間太長,所以導致高壓力下(200并發(fā),總共連續(xù)訪問50萬次,jvm內(nèi)存1G)會出現(xiàn)內(nèi)存一直沒有回收的問題,后來打印了一下request session的默認超時(AS是jboss 4.2.2),是半小時,如果這樣的話確實是會有造成上面內(nèi)存一直被占用的現(xiàn)象。
          這個jsp是這樣的,非常簡單:
          <%@ page contentType="text/html;charset=GBK" %>
          Just Test.
          造成這個問題的具體原因需要結(jié)合session的機制來講了,講session機制的文章相當多,感興趣的話可以參見以下兩篇文章:
          http://www.builder.com.cn/2007/1123/650439.shtml
          http://bbs.chinaunix.net/viewthread.php?tid=1178466

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

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

          posted on 2008-07-03 16:24 BlueDavy 閱讀(8002) 評論(13)  編輯  收藏 所屬分類: Internet

          評論

          # re: JSP的Request session的有效時間應合理設置 2008-07-03 16:50 隔葉黃鶯

          一般容器都是半個小時,基本我們都直接使用這個默認值,這個時間對于用戶還是一個比較合理的值。

          對于大量用戶并發(fā)的情況,盡量不要在 session 中放置大對象。  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-07-04 09:10 lizongbo

          對于確實需要session的場景,應該區(qū)分游客用戶和登錄用戶,將默認游客的session超時時間設置很短,比如5分鐘,而在用戶登錄成功之后,再將登錄用戶的session的超時時間設置為半小時或更長。 session.setMaxInactiveInterval(60*30);  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-07-04 22:22 千里冰封

          一般來說,盡量不要放過多的數(shù)據(jù)在session 里面,特別是當連接數(shù)很多的時候  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-07-07 09:51 西濱(Ivan Chen)

          我們碰到的客戶是一天只需要登錄一次,然后session就不要超時了。。。  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-07-08 11:04 Robin's Java World

          @西濱(Ivan Chen)
          給客戶講講REST,呵呵。。。  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-07-09 20:31 網(wǎng)站設計

          我們碰到的客戶是一天只需要登錄一次,然后session就不要超時了。。。   回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-07-09 20:31 網(wǎng)站設計

          客戶是一天只需要登錄一次  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-07-09 20:32 網(wǎng)站制作

          按理嘎嘎餓大概  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-09-04 12:47 hpoyuan

          分析的非常好,受益匪淺,希望能一起提供的朋友加入群35389968一起討論技術(shù)。  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置[未登錄] 2008-11-03 17:45 哈哈

          哈哈 我們的架構(gòu)是沒有session的。   回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2008-11-25 10:43 卡通服裝

          我討厭session,害我老是不停登陸后臺.  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置 2009-04-15 13:24 包裝機

          繼續(xù)關注  回復  更多評論   

          # re: JSP的Request session的有效時間應合理設置[未登錄] 2009-06-12 09:44 gavin

          受教了。  回復  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 开原市| 揭阳市| 达孜县| 宁安市| 临沭县| 左云县| 弥渡县| 民乐县| 武邑县| 锡林浩特市| 白河县| 牟定县| 黄大仙区| 辽中县| 芜湖县| 黑河市| 贺兰县| 乐安县| 襄汾县| 拜城县| 浏阳市| 普兰店市| 瑞昌市| 榆社县| 贵定县| 阆中市| 沭阳县| 沾益县| 赞皇县| 长宁县| 太仓市| 宝兴县| 久治县| 永嘉县| 始兴县| 札达县| 漾濞| 肇源县| 安溪县| 荆州市| 桂林市|