CONAN ZONE

          你越掙扎我就越興奮

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks
          之前寫了個簡單的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" %>
          posted on 2008-07-06 15:04 CONAN 閱讀(201) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 昌江| 元阳县| 贵南县| 屯留县| 汽车| 浦县| 本溪| 杨浦区| 灵宝市| 昭觉县| 砀山县| 随州市| 湘潭县| 焦作市| 西华县| 云梦县| 诸暨市| 宁化县| 和平区| 墨脱县| 正安县| 聊城市| 周宁县| 隆德县| 泸州市| 二连浩特市| 东至县| 且末县| 涡阳县| 临泽县| 泗阳县| 霍城县| 乐清市| 仁化县| 云南省| 乌鲁木齐市| 绥化市| 滨州市| 靖安县| 淮滨县| 莆田市|