HTTPSession 变量可以容纳的数据的最大限制(即大小)是多少?如果超过了会发生什么?最重要的是,如果大小超过 HTTPSession 变量可以容纳的最大大小,那么在整个会话中获取数据的替代方法是什么?
问问题
4446 次
2 回答
8
除了服务器的内存之外,没有限制。替代方案是
- 以更多内存运行您的服务器
- 配置服务器以将会话交换到磁盘(请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html for Tomcat)
- 避免将大数据放入会话中,而是使用缓存或数据库来存储它们。
于 2012-07-28T07:21:15.187 回答
0
有一个很好的建议是谨慎使用 HttpSession 上的数据会话,主要是因为必须考虑很多点,而不仅仅涉及数据大小。
- 如果连接不安全,HttpSession 可能会被劫持。因此,如果连接不是通过 HTTPS,则与 HTTP 相比,被劫持的机会更高。
- 估计在网络上使用该服务的用户数量。您可以分配世界上所有可能的内存,但如果解决方案是预先分配一个没有任何大小限制的会话,那么当许多用户使用时,JVM 中出现 OutOfMemory 的可能性很高。例如:一个 8 KB 的会话数据乘以 100.000 个用户可以达到 800 MB。
- 在服务器中配置的会话超时,Websphere Application Server 默认设置为 30 分钟。如果会话超时减少,它可能有助于 JVM 过载,另一方面你可以让用户非常愤怒。
- 如果解决方案使用许多服务器(集群),需要考虑的一件事是它们之间的共享 Http 会话。
更多信息,我建议您阅读Ken Hygh、Ruth Willenborg 和 Stacy Joines 所著的 Java 网站性能分析一书中的第 2 章 - Http 会话
于 2020-07-02T19:45:19.390 回答