一.安装memcached

1.windows下安装memcached

需要到一个网站下载memcached的for win 32版本.在memcached的官方网站我是找不到的.我看了下,提供win版下载的是一个个人网站,老外的.应该是他自己用src编译的.

下载到只有几十K大小(我也吓了跳,还以为是病毒).安装后确实能用.我尝试在本帖提供附件下载.

下载后输入命令安装命令:

c:\memcached\memcached.exe -d install

然后再输入如下命令把其作为win service常驻启动:

c:\memcached\memcached.exe -d start

其他详细的并没做了,因为部署在win上只是暂时开发测试用的,最终会部署在linux版本上.

2.linux下安装memcached

1.下载包

1.1.到http://memcached.org/下载linux下的memcached的安装包.

1.2.到http://libevent.org/下载安装memcached前比需要的包libevent-2.0.15 我安装的是这个版本.

2.安装libevent-2.0.15

如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。(网上照搬.中间我只是出现过没有GCC的情况)

3.安装memcached

tar zxvf memcached-1.4.2.tar.gz

cd memcached-1.4.2

./configure  --with-libevent=/usr

make

make install

如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。 安装完成后会把memcached放到 /usr/local/bin/memcached ,

4.测试是否成功安装memcached:

# ls -al /usr/local/bin/mem*

成功的话,会输出一些相关信息。

5.启动memcached

网上有一个命令很长的方法,可以我启动后进程是出现了,但就是不监听11211的端口.继续寻找终于找到一个可行的了.2个命令如下:

5.1我使用的,可行的命令

memcached -d -m 128 -l localhost -p 11211 -u root  (其中Localhost是指监听本机器的端口.)

5.2网上很多,但我使用却失败的命令

/usr/local/bin/memcached -d -m 10 -u root -l localhost -p 12000 -c 256 -P /tmp/memcached.pid

6.给出memcached启动命令参数详解.

-d选项是启动一个守护进程,

-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,

-u是运行Memcache的用户,我这里是root,

-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,

-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,

-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,

-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

-p 使用的TCP端口。默认为11211

-m 最大内存大小。默认为64M

-vv 用very vrebose模式启动,调试信息和错误输出到控制台

-d 作为daemon在后台启动

如果要结束Memcache进程,执行:

# kill `cat /tmp/memcached.pid`

或是 通过ps -ef | grep memcached 找到pid ,然后kill

也可以启动多个守护进程,不过端口不能重复。

# ps -ef | grep memcached

root 28914 1 0 07:27 ? 00:00:00 memcached -d -m 128 -l localhost -p 11211 -u root (启动ok)

6.测试memcached

#telnet localhost 11211

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

二.调用的包

可从http://code.google.com/p/memcached-session-manager/downloads/list下载所需要的包.

需要注意的是,你只能从该网站下载到 memcached-session-manager-1.5.1.jar  /  memcached-session-manager-tc6-1.5.1.jar  /  msm-javolution-serializer-1.5.1.jar

这3个包,还有2个包分别是 : memcached-2.5.jar  /  javolution-5.5.1.jar这2个包,需要自己另外下载哦.

都是放到tomcat/lib下.

三.环境

本人使用的是tomcat6 + memcached-session-manager,首先是在windows下测试的.以后将部署在Linux环境下

四.TOMCAT配置

网上有好多的版本,甚至在memcached-session-manager的wiki中都是在tomcat的conf/context.xml下配置.

但本人是在server.xml中配置到需要session共享的host中.配置见如下:

  1. <Engine name="Catalina" defaultHost="localhost">
  2. <Host name="localhost"
  3. appBase="webapps"
  4. unpackWARs="true"
  5. autoDeploy="true"
  6. xmlValidation="false"
  7. xmlNamespaceAware="false">
  8. <Alias>localhost</Alias>
  9. <Context reloadable="false" path="" docBase="/test/" workDir="/test/work" >
  10. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  11. memcachedNodes="n1:localhost:11211"
  12. requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot;
  13. sessionBackupAsync="false"
  14. sessionBackupTimeout="100"
  15. transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
  16. copyCollectionsForSerialization="false"
  17. />
  18. </Context>
  19. </Host>
  20. </Engine>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost"
appBase="webapps"
unpackWARs="true"
autoDeploy="true"
xmlValidation="false"
xmlNamespaceAware="false">
<Alias>localhost</Alias>
<Context reloadable="false" path="" docBase="/test/" workDir="/test/work" >
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js){1}quot;
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
</Context>
</Host>
</Engine>

五.测试代码

  1. <%
  2. String tmp = (String)session.getAttribute("tmp");
  3. if(tmp == null || tmp == ""){
  4. session.setAttribute("tmp","i am created in tomcat 2 . my id is : "+session.getId());
  5. tmp = (String)session.getAttribute("tmp");
  6. out.println(" null now to created value !");
  7. out.println("<br/>");
  8. out.println(tmp);
  9. System.out.println(tmp);
  10. }else{
  11. out.println(tmp);
  12. System.out.println(tmp);
  13. }
  14. %>
<%
String tmp = (String)session.getAttribute("tmp");
if(tmp == null || tmp == ""){
session.setAttribute("tmp","i am created in tomcat 2 . my id is : "+session.getId());
tmp = (String)session.getAttribute("tmp");
out.println(" null now to created value !");
out.println("<br/>");
out.println(tmp);
System.out.println(tmp);
}else{
out.println(tmp);
System.out.println(tmp);
}
%>

六.测试结果

无论你从哪个tomcat浏览该jsp的打印信息(只要不关浏览器或者浏览器的标签),获得的session id都是一样的,证明是同一个session,并且共享了.

然后启动你的多个测试tomcat吧...关于memcached的安装.本文不提供.但会另外写文章叙述.

tomcat使用memcached完成集群的更多相关文章

  1. Nginx+Tomcat+Memcached 实现集群部署时Session共享

    Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...

  2. 基于nginx的tomcat负载均衡和集群

    要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...

  3. nginx+tomcat 配置负载均衡集群 (转载)

    一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版n ...

  4. apache的tomcat负载均衡和集群配置 "

    略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...

  5. 基于Tomcat的Solr3.5集群部署

    基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...

  6. Memcached【Magent+Memcached】集群

    Memcached介绍  事件处理libevent是个程序库,它将Linux的epoll.BSD类操作系统的kqueue等事件处理功能封装成统一的接口.即使对服务器的连接数增加,也能发挥O(1)的性能 ...

  7. memcached构建集群分析之一

    memcached本身是不支持集群的,集群所关注的容灾.容错.宕机恢复机制统统都没有,实战中需要自己实现容灾机制. memcached集群相比memcached的优势: 巨量数据分布到集群的多台应用主 ...

  8. 通过 Terracotta实现基于Tomcat的Web应用集群

    [转]通过 Terracotta实现基于Tomcat的Web应用集群 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 tomcatweb session集群服务器负载均 ...

  9. 简单的 Nginx+Tomcat 配置负载均衡集群

    简单 Nginx+Tomcat 配置负载均衡集群 前期准备 解压两个tomcat,修改端口号 server1:8081 server:8082 同时启动 nginx官网下载解压版nginx 创建一个简 ...

随机推荐

  1. JAMA:Java矩阵包

    原文链接:JAMA:Java矩阵包 API文档链接:线性代数Java包 JAMA jama是一个非常好用的java的线性代数软件包.适用于日常编程可能碰到的各种矩阵运算问题,提供了一个优雅的简便的解决 ...

  2. IntellijIdea中常用的快捷键

    快速查找类:Ctrl+N 提示:Ctrl+Space 提示:Ctrl+Shift+Space 查看documentation:Ctrl+Q 查找类.方法.变量的引用:Alt+F7 定位类.方法.变量的 ...

  3. Linux 引导过程内幕

    转载:http://www.ibm.com/developerworks/cn/linux/l-linuxboot/index.html   从主引导记录到第一个用户空间应用程序的指导 引导 Linu ...

  4. Shlwapi.h Shlwapi.dll 动态库

    Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用.有一部 ...

  5. BUG: GetDC() ReleaseDC()引起的内存泄漏

    调用CWnd::GetDC函数跟CWnd::ReleaseDC函数的代码运行时,会出现 4 个字节的内存泄漏. Microsoft 已经确认这是在本文开头部分列出的 Microsoft 产品中的缺陷. ...

  6. jQuery的动画效果

    jQuery 是一个 JavaScript 库.jQuery 库可以通过一行简单的标记被添加到网页中. <script type="text/javascript" src= ...

  7. Android网络请求与解析

    1.Volley和Gson结合使用——Volley适用于小型数据,多次的请求,使用Gson解析时,服务器数据的键值不能包含常用的标识符如:class.....等,这些就需要与服务端小伙伴商量 这样也可 ...

  8. 使用Hibernate框架技术时,对项目进行的配置

    1.在需要使用Hibernate框架技术的项目上单击鼠标右键,在弹出的菜单中选择MyEclipse-->Add Hibernate Capabilities,打开Add Hibernate Ca ...

  9. Python基础复习_Unit one

    一. 编译&&安装Python2.7     1.安装python第三方模块管理工具 easy_install --->> easy_install-2.7 pip Ipy ...

  10. LeetCode 319

    Bulb Switcher There are n bulbs that are initially off. You first turn on all the bulbs. Then, you t ...