1、現象:問題描述
客戶端請求與servlet建立連線之後,將為每乙個客戶端指派乙個httpsession物件,並且在該使用者會話期間一直存在,假如有5000個使用者,那麼將會產生5000個httpsession物件,每個httpsession都需要分配一定的記憶體,如部分使用者長時間不活動但還是繼續保留這個session的話,就極大的浪費了記憶體,也不合理的限制了最大使用者數
2、關鍵過程:
根本原因分析引起這個問題的根本原因是沒有設定httpsession的超時時間,導致即使會話長期不活動但系統還仍然保持這個會話,占用系統資源。
3、結論:解決方案及效果
針對超時時間的設定,有兩種方法可以解決這個問題,
(1) 在servlet**中,使用httpsession物件的方法setmaxinactiveinterval(int)設定乙個會話維持非活動狀態的最大秒數。**如下:
(2).在web.xml檔案內通過使用session-config標誌設定,通過標誌session-timeout可以定義所有非活動httpsession物件存在的最大時間。
604、經驗總結:預防措施和規範建議
以上兩種方法都可以解決問題,第一種方法是將超時值用於特定的servlet,針對每乙個session進行單獨設定,而第二種方法是應用於整個web應用程式,所有的session都遵循這個共同的超時時間,根據不同的需要來選用這兩種方法。如果同時使用了這兩種方法對同乙個session設定了兩個超時時間,那麼將以較小的那個時間為準。
會話管理(二) HttpSession
httpsession會話管理 伺服器為每個會話建立乙個httpsession物件 每個會話物件都有乙個唯一的id 把使用者的資料相應的儲存到httpsession物件中 舉例 實驗 記錄不同使用者 瀏覽器 的訪問次數。不停的重新整理頁面,頁面上的數次在增加。這是你第 count 次訪問 out.c...
httpsession詳解(會話追蹤原理)
httpsession物件 1 原理 客戶端瀏覽器第一次訪問,伺服器端建立乙個會話物件。並且具有id的唯一值。依賴cookie將sessionid的值傳送給客戶端。第二次請求的時候,客戶端瀏覽器攜帶sessionid到伺服器。伺服器端獲得sessionid,從而實現了會話跟蹤 2 特點 建立在伺服器...
HttpSession會話狀態的生命週期
瀏覽器訪問伺服器時,伺服器會建立乙個session物件 有乙個sessionid 伺服器在預設的情況下,會將sessionid以cookie的機制傳送給瀏覽器。當瀏覽器再次訪問伺服器時,會將sessionid傳送給伺服器,伺服器依據sessionid就可以找到對應的session物件。伺服器以此方式...