tomcat+nginx+memecached缓存session共享出现onBackupWithoutLoadedSession

使用的tomcat+nginx+memecahced共享session,前期运行的好好的,后来一直出现警告信息
*PM de.javakaffee.web.msm.LockingStrategy onBackupWithoutLoadedSession
WARNING: Found no validity info for session id*

tomcat的conf/context.xml配置

<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>

<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.101:11211 n2:192.168.1.102:11211"
lockingMode="auto"
sticky="false"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="1000" 
    transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"

/>
<!-- Uncomment this to enable Comet connection tacking (provides events
     on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->

原因分析:sessionid在缓存中找不到丢失了,重新创建session时出现这个警告信息
丢失原因:1)配置不正确,用的msm版本不对(前面用的好好的,所以不是这个导致的)
2)Memcached缓存满了(memcached在缓存快满的时候,会自动剔除和覆盖)
查看memcached的使用

\#ps -ef|grep memcached
root 2036 1 2 16-11:21:54 /usr/bin/memcached -m 4096m -p 11211 -u nobody -d -P
\#top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2036 nobody 20 0 4531m 4.1g 472 S 4.0 13.2 23721:55 memcached

11211的memcached 4g大小全部用满了,bingo,原来另外一个团队开发的项目把11211当做业务数据存储使用

解决方案:11211的memcached实例只用来存储session,4g的大小足够使用了,另外的项目改用其它的memcached实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx+tomcat7+session共享 kryo序列化所需要包 1.将上面所提到的包全部拷贝到tomcat的lib下(三台tomcat都需要) 2.修改每台tomcat的conf目录下得context.xml文件或者server.xml文件,在其中加入如下任意一段代码(注意:当使用多台tomcat时,一定要使用non-sticky模式): <Context> ... <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211" sticky="false" sessionBackupAsync="false" lockingMode="uriPattern:/path1|/path2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> </Context> Sticky 模式:tomcat session 为 主session, memcached 为备 session。Request请求到来时, 从memcached加载备 sessiontomcat (仅当tomcat jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。下面是sticky模式时响应的流程图(图片来源网络): sticky模式 Non-Sticky模式:tomcat session 为 中转session, memcached1 为主 sessionmemcached 2 为备session。Request请求到来时,从memcached 2加载备 sessiontomcat,(当 容器 中还是没有session 则从memcached1加载主 sessiontomcat, 这种情况是只有一个memcached节点,或者有memcached1 出错时),Request请求结束时,将tomcat session更新至 主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的,如下是non-sticky模式的响应流程图:(图片来源网络)。 non-sticky

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值