程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 合理設置JSP的Request session的有效時間

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

編輯:關於JSP

之前寫了個簡單的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是這樣的,非常簡單:

<%@pagecontentType="text/html;charset=GBK"%>

JustTest.

造成這個問題的具體原因需要結合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" %>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved