Java中tomcat memecached session 共享同步问题的解决办法

网友投稿 215 2023-07-28


Java中tomcat memecached session 共享同步问题的解决办法

事件http://缘由:一个主项目“图说美物”,另外一个子功能是品牌商的入驻功能,是跟主项目分开的项目,为了共享登录的用户信息,而实现session共享,俩个tomcat,一个tomcat6,一个tomcat7

web项目windows系统下实现session的共享

第一个步:

在俩个tomcat的context.xml这个文件中配置如下代码:

memcachedNodes="n1:127.0.0.1:11211"

lockingMode="auto"

sticky="true"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

copyCollectionsForSerialization="true"

/>

第二步:

Tomcat6下添加的jar包:

tomcat7下添加的jar包:

PS:利用memcache来保存tomcat的session会话

写此文的主要目的是修正一下,部分网上有误的地方。

前提条件:

1、memcached正常工作了

2、tomcat 正常工作了。

1、安装方法及安装包

javolution-5.4.3.1.jar

memcached-2.4.2.jar

memcached-session-manager-1.3.0.jar

msm-javolution-serializer-cglib-1.3.0.jar

msm-javolution-serializer-jodatime-1.3.0.jar

安装方法:  将这几个包放到/usr/local/tomcat6.0/lib里。

2、编辑tomcat的配置文件。

<这一点很重要,因为网上大多数文章都是说修改server.xml里配置;我试过但最终发现session的信息没有存入到memcache中,我意识到这可能是配置有问题。目前发现编辑context.xml这个文件,是可以立即将session丢入到memcache中的。>

# vim /usr/local/tomcat6.0/conf/context.xml

memcachedNodes="n1:10.254.41.197:11211"

requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization="false" />

3、如何测试?

我目前的测试方法是,通过apache的mod_jk来实现负载均衡(之前的文章里有写),并且启用tomcat之间的会话复制。

这样的结果就是,seesion ID会随着每次用户的提交而变换节点,但ID不变。

例如:

ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat2

下次提交就会变成: <节点切换了,但是ID不变>

ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat1

结合memcache的状态: <我之前在会话没有成功的丢到memcached这里时,cmd_set 为0 >

# perl memcached-tool.pl 10.254.41.197:11211 stats

           &nbshttp://p;     cmd_get          27

                 cmd_set          15

                 get_hits           12

# perl memcached-tool.pl 10.254.41.197:11211 stats

            &nhttp://bsp;    cmd_get   http://       31

                 cmd_set          17

      get_hits           14

我想通过以上的判断,配置 是成功的!

memcachedNodes="n1:127.0.0.1:11211"

lockingMode="auto"

sticky="true"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

copyCollectionsForSerialization="true"

/>

第二步:

Tomcat6下添加的jar包:

tomcat7下添加的jar包:

PS:利用memcache来保存tomcat的session会话

写此文的主要目的是修正一下,部分网上有误的地方。

前提条件:

1、memcached正常工作了

2、tomcat 正常工作了。

1、安装方法及安装包

javolution-5.4.3.1.jar

memcached-2.4.2.jar

memcached-session-manager-1.3.0.jar

msm-javolution-serializer-cglib-1.3.0.jar

msm-javolution-serializer-jodatime-1.3.0.jar

安装方法:  将这几个包放到/usr/local/tomcat6.0/lib里。

2、编辑tomcat的配置文件。

<这一点很重要,因为网上大多数文章都是说修改server.xml里配置;我试过但最终发现session的信息没有存入到memcache中,我意识到这可能是配置有问题。目前发现编辑context.xml这个文件,是可以立即将session丢入到memcache中的。>

# vim /usr/local/tomcat6.0/conf/context.xml

memcachedNodes="n1:10.254.41.197:11211"

requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization="false" />

3、如何测试?

我目前的测试方法是,通过apache的mod_jk来实现负载均衡(之前的文章里有写),并且启用tomcat之间的会话复制。

这样的结果就是,seesion ID会随着每次用户的提交而变换节点,但ID不变。

例如:

ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat2

下次提交就会变成: <节点切换了,但是ID不变>

ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat1

结合memcache的状态: <我之前在会话没有成功的丢到memcached这里时,cmd_set 为0 >

# perl memcached-tool.pl 10.254.41.197:11211 stats

           &nbshttp://p;     cmd_get          27

                 cmd_set          15

                 get_hits           12

# perl memcached-tool.pl 10.254.41.197:11211 stats

            &nhttp://bsp;    cmd_get   http://       31

                 cmd_set          17

      get_hits           14

我想通过以上的判断,配置 是成功的!

memcachedNodes="n1:10.254.41.197:11211"

requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization="false" />

3、如何测试?

我目前的测试方法是,通过apache的mod_jk来实现负载均衡(之前的文章里有写),并且启用tomcat之间的会话复制。

这样的结果就是,seesion ID会随着每次用户的提交而变换节点,但ID不变。

例如:

ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat2

下次提交就会变成: <节点切换了,但是ID不变>

ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat1

结合memcache的状态: <我之前在会话没有成功的丢到memcached这里时,cmd_set 为0 >

# perl memcached-tool.pl 10.254.41.197:11211 stats

           &nbshttp://p;     cmd_get          27

                 cmd_set          15

                 get_hits           12

# perl memcached-tool.pl 10.254.41.197:11211 stats

            &nhttp://bsp;    cmd_get   http://       31

                 cmd_set          17

      get_hits           14

我想通过以上的判断,配置 是成功的!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分享Java常用几种加密算法(四种)
下一篇:使用Java实现DNS域名解析的简单示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~