使用的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实例