J2EE集群性能优化点滴(ngixn+servlet server+memcache)
from:http://www.javabloger.com/article/ngixn-j2ee-tomcat-memcache-session-share.html清单:
jar包 5个
jsp测试页面 1个
Nginx 配置文件1个
Tomcat Server.xml 配置文件 2个
前置条件,需要安装以下软件:
Tomcat 服务器 2台+
Nginx 服务器 1台
Memcached 1台
JDK1.5+
IE/Firefox 浏览器
一、下载下列几个 Jar包
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar
http://spymemcached.googlecode.com/files/memcached-2.4.2.jar
http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar
将以下几个Jar包Copy到 $TOMCAT_HOME/lib目下,每个Tomcat节点都需要有。
二、配置Tomcat的Server.xml配置文件,样本可以点击这里下载,主要内容如下:
http://www.javabloger.com/images/2010-05/webcluster/server.xml.txt
<Context docBase="D:\webapp" path="" reloadable="true" >
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
</Context>
每个Tomcat的节点都需要修改。
三、前端分发的Ngixn的配置文件也需要修改,样本可以点击这里下载,主要内容如下:
http://www.javabloger.com/images/2010-05/webcluster/nginx.conf.txt
#gzip on;
upstream www.docyeah.com {
server 192.168.1.103:81;
server 192.168.1.103:82;
}
最后访问测试的JSP页面,进行刷新:
http://www.javabloger.com/images/2010-05/webcluster/msem.jsp.txt
页面上出现:SessionID:292621C48C4D6B27F40290039081492A-n1 一直不变,说明你经过前端 Ngixn 进行分发,跳转到任何一台服务器都是从Memcached中读取session,这样web容器中的 session就集中在一个地方了。并且每台机器都可以进行计算客户端发出的请求,实现了session共享和压力分载,下图中显示了每台Tomcat容器中打印了各打印了2次 Hello World,说明分散的计算了客户端发出的请求。
采用这种方案的优势在于,如果最前端换成IP策略的负载均衡,例如:LVS、Iptables,或者HA-Proxy 都可以,并且可以提高前端负载均衡器的工作效率。通过这样的思路,还可以进行对这个工具进行改写成向数据库写入的方案。
如图所示:
查看大图请点击这里
页:
[1]