`
jbf034
  • 浏览: 153618 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

“会话”存储比较和失效与清理

阅读更多
比较“会话”存储选项
对于这么多“会话”选项,我应该为应用程序选择哪一个呢?回答是“依赖”。
如果排除过于单纯的内存存储,太多约束的文件存储,和过于复杂的memcached 的话,
就剩下在PStore,ActiveRecordStore 和DRb 存储之间选择了。我们可以交叉比较这些选项
的性能和功能。
Scott Barron 对这些存储选项有着完美的分析。它的朋友有些惊讶。对于少量的“会话”,
PStore 和DRb 几乎一样。当“会话”数量急剧上升时,PStore 性能开始下降。这或许是因为
主机操作系统在努力维护有数十万个“会话”文件的目录引起的。DRb 的性能还很正常。
ActiveRecordStore 开始时性能不好,但在“会话”量急剧上升时则表现正常。
对于你意味着什么呢?Bill Katz 的总结如下:
对于性能来说,这不是绝对的,每个人的情况不同。你的硬件,网络时间,数据库的选
择,甚至是天气都有影响到它们。我们最好建议是用最简单的,能工作的解决方案。
如果你应用程序只运行在一个服务器上,你为“会话”存储的最简单选择是Pstore。它
对一定数量的活动“会话”性能还不错,并且它的配置最小。
如果你的应用程序同时会有超过10,000 的“会话”,或者它运行在多个服务器上,我
们建议你使用ActiveRecordStore 解决方案。如果你的应用程序增长很快,你发现这变成瓶颈,你可以迁移到Drb。
“会话”失效与清理
所有解决方案的共同问题是“会话”数据被存储在服务端。每个新“会话”添加一些“会
话”存储。你终将需要一些家务式的管理,或者你将在服务器外寻找资源。
其它原因是清理“会话”。许多应用程序不要一个“会话”永存。一旦来自一个特定浏
览器的用户被日志,应用程序可能会想强迫这样的规则给用户,在它们活动期间被日志;在
它们登出时,或在使用应用程序一个固定时间之后,它们的“会话”应该被中止。
有时候你可以通过失效cookie 持有的“会话”id 来达到这一目的。但是,这会被最终
用户滥用,更坏的是,它很难在浏览器上通过清理服务端内的“会话”数据来同步cookie 的
失效期。
因此我们建议通过简单地移除服务端“会话”数据来失效你的“会话”。浏览器随后到
达的的请求应该包含已经被删除数据的“会话”id,应用程序将不会重新收到“会话”数据;
“会话”将不再有效。
实现这种失效方式依赖于使用的存储机制。
对于PStore“会话”,通过周期性地运行一个清理任务很容易地达到。这个任务应该检
查“会话”目录内文件被最后修改的时间,删除比给定时间晚的文件。
对于基于“活动目录”的“会话”存储,我们建议在session 表内定义created_at,
updated_at 列。你可以删除在最后一小时内所有没被修改的“会话”,通过使用SQL 的清理
任何如:
delete from sessions
where now() - updated_at > 3600;
基于DRb 的解决方案,失效被放在DRb 服务端处理。你或许想在“会话”数据哈希表内
记录时间戳。你可以运行一个单独的线程(或是单独的进程),它周期性地删除这个哈希表内
条目。
在所有情况下,你的应用程序可以在它们不再被需要时(例如,当一用户登出时),通过
调用reset_session()来删除“会话”帮助这种处理。
分享到:
评论

相关推荐

    会话:会话存储类

    总结,会话存储类是Web开发中不可或缺的一部分,理解和正确实现它对于构建健壮的、高可用的应用至关重要。理解其工作原理,选择合适的存储机制,并在设计中充分考虑性能和安全性,是每个开发者都需要掌握的关键技能...

    实验2 Servlet和会话实验源代码.rar

    - `invalidate()`:结束会话,使所有会话属性失效。 6. **源代码解析** 在"src"目录下,可能包含了Servlet的Java源代码,这些类通常继承自`javax.servlet.http.HttpServlet`。每个Servlet类都覆盖了`doGet()`或`...

    Servlet会话机制(cookie and session)

    Servlet会话机制是Web开发中的核心概念,它允许服务器在客户端之间保持状态,尤其是在无状态的HTTP...同时,为了降低服务器内存压力,可能还需要配合其他策略,如定期清理过期Session,或者采用分布式Session存储方案。

    为微信小程序提供会话管理功能.zip

    2. **会话创建与维持**:服务器收到code后,生成一个session,将OpenID、Session Key以及服务器自定义的会话信息(如用户权限、有效期等)存储在服务器端。同时,返回一个session_id给小程序客户端。客户端保存这个...

    session 状态 失效

    在IT领域,尤其是在Web开发中,"Session状态失效"是一个常见的问题,涉及到用户在网站上的交互体验和数据管理。本文将深入探讨这个问题,包括它的原因、影响以及如何解决。 首先,Session是Web应用程序中用于存储...

    解决因浏览器关闭导致购物车数据丢失问题

    在电子商务网站中,购物车是用户浏览商品时存放待购买商品的重要功能。然而,当用户关闭浏览器或因为其他原因导致会话(Session)失效时,购物车中...同时,还需要注意定期清理过期的会话,以保持系统资源的有效利用。

    购物车中数据的存放方式

    本文基于标题“购物车中数据的存放方式”及其描述,深入探讨两种主要的购物车数据存储方案——会话存储与数据库表存储,以及它们各自的优缺点。 #### 方式一:会话存储 **定义与原理**: 会话(Session)是一种...

    shhuuu.docx

    3. **浏览器关闭**:浏览器关闭时,存储在内存中的会话信息会被清除,导致登录态失效。 4. **服务器重启或数据清理**:服务器定期清理过期会话,或者因为重启等原因,可能导致之前分配的会话ID无效。 5. **安全...

    解决登录注销后退失效

    - **Session机制**:Session存储着用户的登录状态和其他重要信息。在用户注销时,必须彻底清除这些信息,避免后续通过任何方式恢复。 - **响应缓存控制**:通过设置HTTP响应头中的缓存控制字段,可以有效地阻止...

    javaservlet的一些内容

    开发者应确保正确处理和存储会话数据。 10. **分布式会话**:在集群环境中,会话复制或会话粘滞策略可以保证多台服务器间的会话一致性。会话复制是将一个会话的所有信息复制到其他服务器,而会话粘滞则是将特定用户...

    Python库 | zope.app.session-3.4.2.tar.gz

    `zope.app.session`还提供了会话过期和自动清理的功能。你可以设定会话的过期时间,如果用户在设定的时间内没有进行任何操作,会话将会自动失效。这有助于减少服务器存储的无效会话数据,提高性能。 此外,该库支持...

    Memcahed分布式缓存服务替换Session解决方案

    1. **SessionID生成与Cookie管理:**每次会话开始时,生成一个全局唯一标识符(GUID)作为SessionID,并将其存储在客户端的Cookie中。Cookie的作用域设置为顶级域名,允许跨子域名共享。系统通过SessionID来识别同一...

    mongodb 数据库添加TTL 索引,自动清理数据库

    在应用场景上,TTL索引非常适合于那些数据有自然生命周期的场景,比如日志分析、临时会话管理、缓存数据处理等,这些场景的数据不再需要被长期保存,自动清理可以显著提高存储效率并降低维护成本。 ### 总结 在...

    处理含有登录地址第二次没退出登录就404的问题

    这通常与身份验证和会话管理有关,具体到这个情况,可能是由于Shiro(一个Java安全框架)的配置或使用不当导致的。下面将深入探讨这个问题,并提供可能的解决方案。 Shiro是一个轻量级的安全框架,用于处理认证、...

    ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享

    Session(会话)是***应用程序用来跟踪用户会话状态的机制,它通过在服务器端存储关于用户会话的信息来确保用户在浏览多个页面时可以被识别和跟踪。 问题出现的原因是***的FileChangesMonitor组件会监视应用程序...

    Cookie与Session机制

    在Web开发中,Cookie与Session是两种非常重要的用户身份验证和会话管理技术。它们的主要目的是跟踪用户状态,尤其是在无状态的HTTP协议下。本文将深入探讨Cookie与Session的工作原理、优缺点以及如何在实际应用中...

    php简单的会话类代码

    在PHP编程中,会话(Session)是一种存储用户状态信息的有效方式,特别是在用户登录和权限管理方面。本文将深入解析给定的`session`类代码,并讨论PHP中的会话管理和安全性。 首先,让我们看下提供的代码片段。这个...

    head_first_servlet&jsp学习笔记

    5. **会话监听器**:监听会话的创建、失效等事件,可用于清理会话数据。 【JSP编程】 1. **JSP转换过程**:JSP被编译成Servlet,然后执行。 2. **JSP元素**:包括脚本let、指令、表达式、声明、EL和JSP动作,它们...

    一个严格的PHP Session会话超时时间设置方法

    这个参数定义了会话数据在服务器上可以存放多久,超过这个时间,会话数据可能会被清理回收。 - session.cookie_lifetime是指会话cookie在客户端可以存活的时间,单位也是秒。默认值是0,意味着cookie会在浏览器关闭...

    jqSession的js文件

    在Web开发中,会话管理是至关重要的,它允许开发者在用户的不同请求之间存储和检索数据,即使这些请求是异步的或者用户关闭并重新打开浏览器。`jqSession.js`通过简化API调用来提供这一功能,使得开发者可以更方便地...

Global site tag (gtag.js) - Google Analytics