最近配置了nginx+tomcat6+redis的集群方案,设置session超时时间后,实际超时时间和配置的超时时间差距很大。设置超时时间的有3个地方:
tomcat/conf下面的context.xml(设置的300秒)和web.xml(设置的5分钟)、web-inf下面的web.xml(设置的5分钟),按理说5分钟的时间session就会超时,但事实上过了半个小时session也没有超时。如果把context.xml里面设置60秒,则1分钟后session失效,实在弄不懂为什么设置300的时候不是5分钟失效。
各个xml具体配置如下:
conf下面的context.xml:
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="192.168.0.85"
port="6379"
database="0"
maxInactiveInterval="300"/>
conf下面的web.xml:
 <session-config>
        <session-timeout>5</session-timeout>
    </session-config>
web-inf下面的web.xml配置如下:
<session-config>
<session-timeout>5</session-timeout>
</session-config>还请各位老大帮忙分析分析,或者告诉小弟如何去排查

解决方案 »

  1.   

    楼主问题解决了吗,我遇到的场景跟你一样,只是我用的是memcached,不是redis
      

  2.   

    我们的没有问题Tomcat 下 Memcached 集群与 Terracotta 集群比较
    http://www.cnblogs.com/interdrp/p/3588292.htmlTomcat 集群模式下 Session 更新 Bug (redis memcached 及tomcat自已的集群)
    http://www.cnblogs.com/interdrp/p/5670854.htmlSpring+Websocket集群实现广告消息的推送
    http://www.cnblogs.com/interdrp/p/4063365.html
      

  3.   

    我们是 nginx+tomcat8+spring5.0.1+redis 下的,你确定红色地方的参数没错?<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
    <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
        host="192.168.0.85"
        port="6379"
        database="0"
        maxInactiveInterval="300"/>