基本内存中会话池大小
基本内存中会话池大小数取决于会话支持配置。
- 关于内存中的会话,对会话访问进行优化以达到此会话数。
- 对于分布式会话,当会话存储在数据库或另一个 WebSphere® Application Server 实例中时; 池大小还指定高速缓存大小以及以手动更新方式保存的上次访问时间更新数。
对于分布式会话,当会话高速缓存达到它的最大大小并且请求新的会话时,会话管理工具将从高速缓存中移除最近最少使用的会话,来为新的会话腾出空间。
硬件系统的一般内存需求和电子商务站点的使用情况特性确定最优值。
请注意,增加基本内存会话池大小可能需要增加相应 WebSphere Application Server 的 Java™ 进程的堆大小。
非分布式会话中的溢出
缺省情况下,内存中保持的会话数由基本内存中会话池大小来指定。 如果您不希望对内存中保持的会话数设置限制并允许溢出,请将溢出设置为 true。
允许无限的会话量可能会用尽系统内存,甚至会破坏系统。 某人可能会编写恶意的程序,该程序不断地攻击您的站点并创建会话,但它忽略任何 cookie 或已编码的 URL 并从不利用从一个 HTTP 请求到下一个 HTTP 请求的同一会话。
当禁止溢出时,如果达到内存限制,那么会话管理工具仍将使用 HttpServletRequest getSession(true) 方法返回会话,并且这是个不保存的无效会话。 任何使用该会话的尝试都会导致 java.lang.IllegalStateException。
通过 WebSphere Application Server 扩展到 HttpSession, com.ibm.websphere.servlet.session.IBMSession ,如果会话是无效会话,则 isOverflow 方法返回 true。 应用程序可以检查此状态并作出相应操作。