簡體   English   中英

Servlet會話屬性大小和生命周期

[英]Servlet session attribute size and lifetime

1)應該附加到會話的對象的可接受大小范圍是多少? 如果我附加一個可以是5k的對象,並且在任何給定時間我有10k個有效會話,那就是50MB的內存,這對我來說是可以接受的。 這是解決問題的有效方法,還是存在其他重大問題?

2)這可能是一個愚蠢的問題,但是如果我將一個對象附加到具有2周生命周期的會話中,我是否可以在會話的整個持續時間內訪問該屬性,就好像它在內存中一樣?

3)有沒有理由不總是將會話信息保存到數據庫?

  1. 可接受的大小取決於您的用例和並發會話數。 如果您的會話持續2周,那么可以想象您可能會有很多並發會話,但如果10k是您的最終防范,那么5k會話對象應該沒有問題(如您的計算所示)。

  2. 只要您有對會話對象的引用(或者能夠獲得此類引用),那么數據將在會話中持久存在。 請記住,您的會話對象必須是可序列化的。

  3. 出於性能原因,您可能不希望將所有會話數據持久保存到數據庫,尤其是在可以輕松重新創建會話數據的情況下。

  1. Java EE不限制HTTP會話的大小。 您的webapp的RAM要求將是x + su * s,其中“x”是其他所有內容,“su”是並發會話用戶的最大數量,“s”是會話對象大小本身。 因此,如果這是一個不超過5個用戶的應用程序,請選擇它。 如果它有1500個用戶,您可能需要重新考慮。 每個會話對象的序列化/反序列化所需的時間將或多或少地隨對象的大小線性增加。 因此,如果需要進行大量的串行轉換,請做好准備。
  2. 只要你的會話還活着,你就可以。
  3. 持久性sesion數據在性能上是昂貴的,只有在出於恢復原因需要群集中的會話復制時才應該這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM