首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Tomcat集群session复制与Oracle的坑。。

问题描述 公司某个系统使用了tomcat自带的集群session复制功能,然后后报了一个oracle驱动包里面的连接不能被序列化的异常。...org.apache.catalina.ha.session.DeltaManager.requestCompleted Unable to serialize delta request for sessionid [F825A52DD9E0E7F8FD6BB3E3F721F841] java.io.NotSerializableException...接下来就运维的同学头疼了,换tomcat版本、改各种tomcat相关的配置都没有解决。...而在干掉的那个对象里面发现使用了java.sql.Clob类型,曾几何时在网上有看到过这个异常,在tomcat session复制时使用了这个类型的字段是会出问题的。...tomcat真是醉了,session复制你不支持Clob字段,你报一个oracle驱动不能序列化的错误,有点误导,让人迷失方向,还好问题解决了。。

86790

Tomcat - 怎么控制某个类或者包下的日志打印级别

问题与分析 Tomcat是使用自己的日志实现tomcat-juli.jar来打印日志信息的,日志会被打印到catalina.out里,除去你在项目里自己使用的日志框架外,由System.out,System.err...serialize session attribute [javax.zkoss.zk.ui.Session] for session [EB56FE915F0611E8195FF5F95C96A9E2.app2] java.io.NotSerializableException...解决方法 在Tomcat的安装目录下,找到conf\logging.properties文件,找到如下注释(一般在最末尾): 1 2 3 # For example, set the org.apache.catalina.util.LifecycleBase...de.javakaffee.web.msm.JavaSerializationTranscoder.level = SEVERE 因为这个未序列化异常是在这个类中被打印出来的,而且log级别是warning;对于Tomcat...参考链接 Tomcat日志设定 tomcat 日志级别 警告 本文最后更新于 December 12, 2018,文中内容可能已过时,请谨慎使用。

79820
您找到你想要的搜索结果了吗?
是的
没有找到

负载均衡集群中的session解决方案

分享目录: 问题在哪里?如何处理? 会话保持(案例:Nginx、Haproxy) 会话复制(案例:Tomcat会话共享(案例:Memcached、Redis) 问题在哪里?...会话复制Tomcat上得到了支持,它是基于IP组播(multicast)来完成Session的复制Tomcat会话复制分为两种: 全局会话复制:利用Delta Manager复制会话中的变更信息到集群中的所有其他节点...不过,这里我不准备来解释会话复制Tomcat配置,如果有需求可以参考Tomcat官方文档,主要是因为会话复制不适合大的集群。...---- 会话共享 既然会话保持和会话复制都不完美,那么我们为什么不把Session放在一个统一的地方呢,这样集群中的所有节点都在一个地方进行Session的存取就可以解决问题。...总结如下: 会话保持的缺点: ①负载不均衡了 ②没有彻底解决问题 会话复制的缺点: 集群超过6个节点就会出现一系列的问题 会话共享:会话数据共享在Nosql(Redis)数据库中分享。

2.4K40

针对负载均衡集群中的session解决方案的总结

在负载均衡中,针对Session的处理,一般有以下几种方法: 1)Session会话保持(案例:Nginx、Haproxy) 2)Session会话复制(案例:Tomcat) 3)Session会话共享...会话复制Tomcat上得到了支持,它是基于IP组播(multicast)来完成Session的复制Tomcat会话复制分为两种: 1)全局会话复制:利用Delta Manager复制会话中的变更信息到集群中的所有其他节点...不过,这里不准备来解释会话复制Tomcat配置,如果有需求可以参考Tomcat官方文档,主要是因为会话复制不适合大的集群。...三、Session会话共享 既然会话保持和会话复制都不完美,那么我们为什么不把Session放在一个统一的地方呢,这样集群中的所有节点都在一个地方进行Session的存取就可以解决问题。...简单总结: 会话保持的缺点:负载不均衡;没有彻底解决问题. 会话复制的缺点:集群超过6个节点就会出现一系列的问题. 会话共享:会话数据共享在Nosql(Redis)数据库中分享。

1K110

Tomcat利用MSM实现Session共享方案解说

然而这种问题应该有更省事更成熟的解决方案,也就是将要说的Memcached_Session_Manager,简称msm,这就是一个用于解决分布式tomcat环境下session共享的问题的开源解决方案。...JMX管理&监控 MSM解决的问题:假设有一个Tomcat集群,使用黏性session,如何应对单点故障问题?...服务集群,二者的区别是: 1)黏性Session(即sessionsticky,不复制Session会话): 此模式下同一会话中的请求都被派送到同一个tomcat实例上,这样就无须在多台服务器之间实现session...2)非黏性Session(即sessionreplication,复制Session会话)此模式下同一会话中的请求可以被分配到不同的tomcat实例上进行处理,此时就需要在不 同服务器之间同步、复制session...当服务同一会话的下一次请求时,tomcat可以在本地找到这个会话数据,同一会话的第二次请求 处理完后,会话数据会更新到memcached节点。 假设处理某个会话tomcat挂了。

1K100

CentOS-6.4-minimal版中Apache-2.2.29与Tomcat-6.0.41实现集群

- 几个术语 1)负载均衡   前端服务器(常常名为"负载均衡器","代理均衡器"或"反向代理")收到HTTP请求后,将请求分发到后端的不止一个"worker"的web服务器,由它们实际处理请求 2)会话复制...  会话复制(即常说的Session共享)是一种机制,将客户端会话的整个状态原原本本复制到集群中的两个或多个服务器实例,以实现容错和故障切换功能 3)集群 集群由两个或多个Web服务器实例组成,这些服务器实例步调一致地工作...,复制后的会话将会慢慢变得庞大,因此它的资源占用率是非常高的   如果在并发量大的应用中,复制会话大小会变得相当大,而使用的总内存更是会迅速升高 3)集群的会话复制,增加了系统的高可用性,由于在每台服务器都保存有用户的...(即tomcat服务器的IP)即可..如果还报这个异常,可以试一下127.0.0.1 2)如果仍然启动失败,或者启动成功,但无法实现session共享,那么有可能是组播出现了问题   因为tomcat中的集群原理是通过组播的方式进行节点的查找并使用...TCP连接进行会话复制的,即tomcat的session同步功能需要用到组播服务   可以通过[route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0]

35310

tomcat 集群怎么保证同步

同步方式 关于集群的具体同步机制,tomcat共提供了两种。一种是集群增量会话管理器,另一种是集群备份会话管理器。...集群增量会话管理器 这是一种全节点复制模式,全节点复制指的是集群中一个节点发生改变后会同步到其余全部节点。那么非全节点复制,顾名思义,指的是集群中一个节点发生改变后,只同步到其余一个或部分节点。...除了这一特点,集群增量会话管理器还具有只同步会话增量的特点,增量是以一个完整请求为周期,也就是说会在一个请求被响应之前同步到其余节点上。...集群备份会话管理器 全节点复制模式存在的一个很大的问题就是用于备份的网络流量会随着节点数的增加而急速增加,这也就是无法构建较大规模集群的原因。为了解决这个问题tomcat提出了集群备份会话管理器。...每个会话只有一个备份。这样就可构建大规模的集群。 ? 同步组件 在上述无论是发送还是接收信息的过程中,使用到的组件主要有三个:Manager,Cluster,tribes。

1.4K00

Apache + Tomcat + mod_jk实现集群服务

Tomcat中的集群原理是通过组播的方式进行节点的查找并使用TCP连接进行会话复制。...worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat #此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性...,不进行会话复制,当某用户的请求第一次分发到哪台 #Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。...worker.controller.sticky_session=false #设为false,则表明需求会话复制。...两台Tomcat服务器日志打印输出结果: 错误解决 问题:发生服务特定错误:1 右键我的电脑->管理->系统工具->时间查看器->应用程序,然后对应应用程序的右侧可以查看到错误日志.

57210

Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案

那就是session 的复制呗, 把session id 在两个节点之间同步(tomcat之间进行session复制) 。 ?...---- Session不一致问题 假设我们的应用部署在Tomcat中 【单个节点的tomcat 】 浏览器在第一次访问服务器Tomcat1时,发现请求的 Cookie 中不存在 sessionid ,...---- Tomcat session 复制 Web 服务器之间,进行 Session 复制同步。...仅仅适用于实现 Session 复制的 Web 容器,例如 Tomcat 不过,这种方式目前基本也不被采用。 session数据量大的时候,复制效率低,占用带宽等等弊端。...网上找了两篇文章,感兴趣的可以参考下 Tomcat会话管理器(Tomcat Session Manager) Jetty集群配置Session存储到MySQL、MongoDB ---- 方式二:基于应用层封装

87320

CentOS-6.4-minimal版中Apache-2.2.29与Tomcat-6.0.41实现负载均衡

-6.0.41整合的基础上,整合过程详见 http://www.linuxidc.com/Linux/2014-09/107338.htm 1)修改端口(由于我是在一台机器上复制多个tomcat,所以需要修改端口...tomcat tomcat2   [root@CentOS64 app]# cp -a tomcat tomcat3   [root@CentOS64 app]# vi tomcat1/conf/server.xml...worker.tomcat2.port=8209   worker.tomcat2.host=127.0.0.1   worker.tomcat2.type=ajp13   worker.tomcat2...www.linuxidc.com/Linux/2014-09/107341.htm 另外补充两个待验证的workers属性描述 1)worker.tomcatlb.sticky_session=true   此处指定集群是否需要会话复制...,若设为true则表明为会话粘性,不进行会话复制   当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理   若设为false则表明需要会话复制,该属性默认值为

18240

架构设计之Spring-Session分布式集群会话管理

前言 通常在web开发中,会话管理是很重要的一部分,用于存储与用户相关的一些数据。对于JAVA开发者来说,项目中的session一般由Tomcat或者jetty容器来管理。...这是一个简单的负载均衡集群架构模型,后端三台Tomcat服务,假设每台服务都使用自己的会话管理,而集群策略是基于加权轮询的方式实现。试想一下,用户是不是永远无法登陆系统?...一般来说,有两种解决方案,session复制和session统一管理。对于session复制,简单的几台还是可以的,但是如果上百台甚至上千台就要考虑复制成本问题了。...解决方案 基于Tomcat会话插件实现tomcat-redis-session-manager 和tomcat-memcache-session-manager,会话统一由NoSql管理。...对于项目本身来说,无须改动代码,只需要简单的配置Tomcat的server.xml就可以解决问题

1.1K90

Tomcat集群会话共享

请求精确定位:sessionsticky,例如基于访问ip的hash策略,即当前用户的请求都集中定位到一台服务器中,这样单台服务器保存了用户的session登录信息,如果宕机,则等同于单点部署,会丢失,会话复制...如果其中一台服务器发生故障,根据负载均衡的原理,调度器会遍历寻找可用节点,分发请求,由于session已同步,故能保证用户的session信息不会丢失,会话复制,。...nginx安装配置 使用Nginx作为Tomcat的负载平衡器,Tomcat会话Session数据存储在Redis,能够实现零宕机的7x24效果。...因为将会话存储在Redis中,因此Nginx就不必配置成stick粘贴某个Tomcat方式,这样才能真正实现后台多个Tomcat负载平衡。 部署nginx #!...所以,到这里我们准备工作就全部完成了,下面我们来配置tomcat通过redis实现会话保持。

52250

使用Spring Session实现Spring Boot水平扩展

另外一个需要解决的问题会话管理, 单个Spring Boot应用的会话Tomcat来管理,会话信息与Tomcat存放在一起。...复制会话:Web服务器通常都支持Session复制,一台应用的会话信息改变将立刻复制到其他集群的Web服务器上。...集中式会话:所有Web服务器都共享一个会话会话信息通常存放在一台服务器上,本文使用Redis服务器来存放会话复制会话的缺点是每次会话改变需要复制到多台Web服务器上,效率较低。...业务子系统一和业务子系统二分别部署在一台Tomcat服务器上,业务子系统三部署在两台Tomcat服务器上,采用水平扩展。...这种设置方式就不需要使用Spring Session来管理会话,使用Tomcat会话管理即可。但弊端是如果服务器宕机或者因为维护重启,则会话丢失。

1K20

Tomcat Session管理分析【面试+工作】

包括:createSession,findSession,add,remove等对session操作的方法;还有getMaxActive,setMaxActive,getActiveSessions活跃会话的管理...id,作为session的唯一标识; 3.ClusterManager接口类 实现了Manager接口,集群session的管理器,Tomcat内置的集群服务器之间的session复制功能; 4.ClusterManagerBase...内置的管理器,使用redis集中存储session,省去了节点之间的session复制,依赖redis的可靠性,比起sessin复制扩展性更好; Session的生命周期 1.解析获取requestedSessionId...其实也有attributes数据,相当于这份数据保存了2份; 2.如何创建 同样RedisSessionManager重写了createSession方法,2个重要的点分别:sessionId的唯一性问题和...内置看定期检测session是否过期,ManagerBase中提供了processExpires方法来处理session过去的问题,但是在RedisSessionManager重写了此方法 ?

65740

软件架构-tomcat之环境部署(下)

webapps都在,然后我们启动下这个tomcat,看看日志是否在logs目录上打印 •上边的方式就实现了,tomcat和jdk都是公共的,每个应用可以有自己的一套配置,只需要复制tomcat-1就可以了...combined方式比common方式记录的值更多 Tomcat 集群(三) Tomcat 会话管理器 •StandardManager Tomcat6的默认会话管理器,用于非集群环境中对单个处于运行状态的...Tomcat实例会话进行管理。...•DeltaManager 用于Tomcat集群的会话管理器,它通过将改变了会话数据同步给集群中的其它节点实现会话复制。...•BackupManager 用于Tomcat集群的会话管理器,与DeltaManager不同的是,某节点会话的改变只会同步给集群中的另一个而非所有节点。

1.6K20

分布式服务集群下实现session共享解决方案

所谓集群,就是让一组计算机服务器协同工作,解决大并发,大数据量瓶颈问题。但是在服务集群中,session共享往往是一个比较头疼的问题。...注:当禁用cookie时也是不能使用session的; cookie: cookie是在客户端保存的方案.而session是在服务端保存的方案.如果cookie不设定时间的话就表视它的生命周期为浏览器会话的期间...,只要关闭IE,cookie就消失了,这种cookie被称为会话cookie.其一般不保存在硬盘上.而是保存在内存中,如果设置了过期时间.那么浏览器会把cookie保存到硬盘中,再次打IE时会依然有效....application server的session复制 可能大部分应用服务器都提供了session复制的功能来实现集群,tomcat,jboss,was都提供了这样的功能。...那么今天,我们以tomcat+nginx+redis架构模式讲解下,如实使用redis保存session,从而实现集群环境下的session共享问题

2.6K80

Tengine(nginx) 搭建Tomcat集群

uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre make && make install 注意:一定要从windows复制粘贴过来...准备两台Linux 每个Linux都安装一个tomcat 在Nginx上配置反向代理 1.反向代理 首先在两台服务器分别配置并启动tomcat,修改tomcat首页为tomcat1和tomcat2...而且,监听在TCP和UNIX域套接字的服务器可以混用 访问分别显示tomcat1和tomcat2 两个tomcat出现的问题 Session共享 – 首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个...机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但 是如果你使用了负载均衡把请求分发到不同的机器呢?...这个时候会话id 在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机 器,而它的session数据可能存在其中一台机器,这个时候就会出现取 不到session数据的情况,于是session的共享就成了一个问题

79040

面试官问:集群部署时,分布式 session 如何实现?

面试官心理分析 面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务、接口幂等性、分布式锁,还有最后一个就是分布式...单块系统的时候这么玩儿 session 没问题,但是你要是分布式系统呢,那么多的服务。 session 状态在哪儿维护啊?...在 tomcat 的配置文件中配置: ? 复制代码然后指定 redis 的 host 和 port 就 ok 了。 ?...复制代码在 spring 配置文件中配置: ? 复制代码在 web.xml 中配置: ? 复制代码示例代码: ?...实现分布式的会话有很多种方式,我说的只不过是比较常见的几种方式,tomcat + redis 早期比较常用,但是会重耦合到 tomcat 中;近些年,通过 spring session 来实现。

34110

Apache Tomcat 负载均衡 集群

unpackWARs="true" autoDeploy="true"> 这样配置的话大部分情况下是没问题的...5) nofailover=On 如果设为‘On’,当工作单元被禁用或者出错时,会话则立即中断。...可以将该值设为On如果后端服务器不支持会话复制(Session replication) 测试文件 我们可以在参与负载均衡或集群的项目下新建一个index.jsp的测试文件 文件代码如下 <%@ page...Tomcat Session复制很简单 只需要两步 第一步 只需要把所有参与集群的Tomcat的配置文件server.xml中的一下配置取消注释就行了 这里使用的是默认配置,如果需要更详细的配置,可以参看官网 参与集群的服务器要在一个内网中,因为Tomcat的Session复制用的是组播 组播会导致网络风暴的问题,因此在公网上的交换机或者路由器通常将此功能禁止

1.3K10
领券