Tomcat Session 持久化

Session的主要数据被存储在服务器内存中,而服务器会为每个在线用户创建一个Session对象,当在线用户很多时,例如同时有几万或是几十万在线的情况下,Session内存的开销将会十分巨大,会影响Web服务器性能。而Session的钝化机制刚好可解决此问题。Session钝化机制的本质就在于把服务器中不经常使用的Session对象暂时序列化到系统文件系统或是数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成。

实现:

要完成session持久化,存放在session里的对象必须要实现java.io.Serializable 接口。

Tomcat通过两个session管理类实现session持久化,StandardManager (默认),PersistentManager

StandardManager不使用任何的Store,当Tomcat正常关闭,重启或Web应用重新加载时,它会将内存中的session序列化到Tomcat目录下

/work/Catalina/host_name/webappname/SESSIONS.ser文件中。当Tomcat重启或应用加载完成后,tomcat会将文件中的session重新还原到内存中。

注:如果突然终止该服务器,则所有会话都将丧失,因为StandardManager没有机会实现存盘处理。

PersistentManager: 通过使用Store,将内存中的session备份到文件或数据库中。当备份一个session对象时,该session对象会被复制到存储器中,而原对象仍然留在内存中。因此如果服务器崩溃,就可以从存储器中获取活动的session对象。当session被换出时,他会被移动到存储器中,因为当前活动的session对象超过了上限值,或者session对象闲置了过长时间。换出session节省内存空间。

配置:

Tomcat默认是已经启用持久化配置,若要禁用持久化功能,则只需要在<Context>节点里配置

<Manager pathname="" />;

持久化配置可进行全局配置和针对某一站点进行配置。全局配置需要在cof文件夹context.xml的

<Context>节点中配置<Manager>,若要针对某一站点配置则需要在cof文件夹server.xml的<Host><Context>

节点中添加<Manager>配置。

StandardManager

<Manager

className=”org.apache.catalina.session.StandardManager”

debug=”0”

maxInactiveInterval=”-1″

/>

PersistentManager:

方式1:

<Manager

className="org.apache.catalina.session.PersistentManager"

saveOnRestart="true"

maxActiveSession="-1"

minIdleSwap="0"

maxIdleSwap="30"

maxIdleBackup="0"

>

<Store

className="org.apache.catalina.session.FileStore"

checkInterval=”60”

directory="../session"/>

</Manager>

方式2:

和方式1的区别:

<Store

calssName="org.apache.catalina.JDBCStore"

driverName="com.mysql.jdbc.Driver" 
connectionURL="jdbc:mysql://localhost/tomsessionDB?user=root&password=" 
sessionTable="tomcat_session"

sessionIdCol="session_id"

sessionDataCol="session_data" 
sessionValidCol="session_valid"

sessionMaxInactiveCol="max_inactive" 
sessionLastAccessedCol="last_access"

sessionAppCol="app_name"

checkInterval="60"

debug="99" />

参数说明:

maxActiveSessions-可处于活动状态的session数,default -1 不限制

checkInterval - 检查session是否过期的时间间隔,default 60s

saveOnRestart-服务器关闭时,是否将所有的session保存到文件中;
minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移到File Store中;(-1表示没有限制)
maxIdleBackup-超过这一时间,将session备份。(-1表示没有限制)

directory-文件存储位置work\Catalina\host name\web app\session\文件名.session

时间: 2024-11-10 11:42:16

Tomcat Session 持久化的相关文章

[转]session 持久化问题(重启服务器session 仍然存在)

转:http://xiaolongfeixiang.iteye.com/blog/560800 关于在线人数统计,大都使用SessionListener监听器实现. SessionListener 触发源:  1.Session Create 时 2.Session timeout 时 3.显式调用session的invalidate方法 时 4.在Tomcat设置Session持久化为FALSE的情况下,Tomcat关闭时,触发Session destroy事件 5.在Tomcat设置Sess

Tomcat生成的session持久化到MySQL

Telling Tomcat to save session records in MySQL 此部分内容摘自 MySQL cookbook 3th.具体内容不做翻译,哈哈,懒 The default Tomcat default session storage mechanism uses temporary files. To save sessions using JDBC with MySQL instead, follow this procedure: Create a table

Tomcat Session管理机制(Tomcat源码解析七)

前面几篇我们分析了Tomcat的启动,关闭,请求处理的流程,tomcat的classloader机制,本篇将接着分析Tomcat的session管理方面的内容. 在开始之前,我们先来看一下总体上的结构,熟悉了总体结构以后,我们在一步步的去分析源代码.Tomcat session相光的类图如下: 通过上图,我们可以看出每一个StandardContext会关联一个Manager,默认情况下Manager的实现类是StandardManager,而StandardManager内部会聚合多个Sess

Session持久化

1.客户端访问Web服务器资源,服务器就会创建一个对该客户相对应的HttpSession对象.即使客户已经离开了浏览器,服务器仍要保留与之对应的HttpSession对象,直至超时. 2.服务器通常把那些暂时不活动但未超时的HttpSession对象转移到文件或数据库中,要使用它们的时候在从中取出装入内存. 这种技术叫做Session持久化 3.持久化的作用: 提高服务器内存的利用率,保证那些暂停活动的客户端在会话超时之前继续原来的会话 在多台web服务器协同对外提供服务的集群系统中,使用Ses

Nginx+tomcat session cluster会话保持实验

Nginx+tomcat session cluster会话保持实验 实验要求: 1.nginx+tomcat 负载均衡 2.会话保持 实验拓扑 ip网络规划 Nginxnode2:172.16.76.20 tomcatAnode3:172.16.76.30 tomcatBnode4:172.16.76.40 基础配置 node2: [[email protected]~]# yum install nginx –y    node3:     [[email protected]~]# yum

第四十四课 tomcat负载均衡群集、tomcat session群集

tomcat负载均衡集群的实现 tomcat  session集群 tomcat session  server及jvm参数调整

tomcat session会话保持实验-之Nginx+tomcat+memcached

tomcat session会话保持实验-之Nginx+tomcat+memcached 实验要求 1.nginx+tomcat 负载均衡 2.memcached 会话保持 实验拓扑   ip网络规划 Nginxnode2:172.16.76.20 tomcatAnode3:172.16.76.30  memcached tomcatBnode4:172.16.76.40  memcached 基础配置   node2 [[email protected]~]# yum install ngin

实战项目memcached+tomcat+session+nginx在工作中的应用和配置

环境介绍:公司根据实际需要搭建一个购物网站,当用户购物时可以 将不同商品,放到同一个购物车中进行同时付款. 环境的搭建: 外网用户  IP地址:1.1.1.1  主机名:fanxiaohui  用户访问网站http://www.taobao.com 使用nginx实现负载均衡,由于网页是用JAVA开发的所以选用tomcat搭建网站服务,由于用户在购物时http是一个无状态的协议,不同的商品都是一个新的连接,默认不会把几个商品放到同一个购物车中,无法进行统一结账,为了能使服务器能够认识是同一个客户

基于memcached-session-manager的tomcat session共享集群

MSM的特性: a.支持tomcat 6,tomcat 7,tomcat 8 b.支持sticky session或no-sticky session c.无单点故障 d.tomcat故障转移 e.memcached故障转移 f.附带串行化插件 g.支持异步session存储,拥有更快的性能 sticky sessions粘性会话: 安装了MSM的tomcat会优先使用本机内存保存session,当一个请求结束后,MSM会把session发送到memcached节点上存放以作备份,第二次请求时,