2012-03-05 109 views
4

1)什么是应该连接到会话的对象的可接受大小范围?如果我附加一个可以是5k的对象,并且在任何给定的时间我都有10k个有效会话,那么这是50MB的内存,这对我来说似乎是可以接受的。这是解决问题的有效方法,还是存在其他重大问题?Servlet会话属性大小和生命周期

2)这可能是一个愚蠢的问题,但如果我附上一个对象的会话与2周的一生,我可以访问属性,就好像是在内存中的会话的整个过程?

3)是否有什么理由不始终坚持会话信息到数据库?

回答

3
  1. 可接受的大小取决于您的用例和并发会话数。如果您的会话持续2周,那么可以设想您可以进行大量并发会话,但是如果10k是您的最大预期值,那么对于5k会话对象应该没有问题(如您的计算所示)。

  2. 只要你有会话对象的引用(或能够得到这样的参考),那么数据将在会议上坚持。请记住,您的会话对象必须是可序列化的。

  3. 您可能不希望所有的会话数据保存到性能方面的原因分贝,特别是如果会话数据可以很容易地重新创建。

3
  1. 的Java EE不限制HTTP会话的大小。您的web应用程序的RAM要求将是x + su * s,其中“x”是其他所有内容,“su”是并发会话用户的最大数量,“s”是会话对象大小本身。所以,如果这是一个不超过5个用户的应用程序,那就去做吧。如果它有1500个用户,您可能需要重新考虑。序列化/反序列化每个会话对象所需的时间将随着对象的大小或多或少线性增加。因此,如果预计会有很多序列转换,请做好准备。
  2. 只要你的会话还活着,你就可以。
  3. 持续性数据的性能价格昂贵,只有在需要恢复群集中的会话复制时才应该执行此操作。