Windows 免安装版Tomcat 内存设置

修改tomcat有很多方式,根据tomcat 的运行方式而不同

主要有几种:windows安装,免安装控制台启动,服务启动,开发工具启动

-Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=64m -XX:MaxPermSize=256m

首先对着几个字段值作出解释:1、-Xms:是初始化堆内存值;2、-Xmx:是堆内存最大值。这两个值是tomcat服务器内存分配是动态的最好体现,刚启动时系统给tomcat分配的内存为-Xms值,当项目占用的内存达到初始化内存的一定比例后(百度上说是80%,这点未验证)才会将给tomcat分配-Xmx大小的内存,反之亦然当项目占用的内存降至-Xmx的40%时,系统会释放部分内存,又将-Xms大小的内存划分给tomcat服务器


tomcat8 里已经忽略了 -XX 这样的参数,所以可以不用加,直接

-Xms256m -Xmx256m  就行。


1、安装版本 Tomcat修改,

直接双击 tomcat8w.exe

20140901093004343.jpg

2、控制台启动方式

直接修改 startup.bat 在最上面加入  

set JAVA_OPTS=-Xms112m -Xmx512m

3、服务方式启动

首先安装要安装成服务, 直接在bin下面新建一个文件install.bat,内容为

service.bat install tomcat_qcjg    

tomcat_qcjg意思是服务的名称

这种方式的修改内存为:

打开“service.bat”,找到“:installed”段,在其上方,修改–JvmMs和–JvmMx

–JvmMs 512 ^
–JvmMx 512

再执行install.bat即可。如果服务已安装,请先卸载服务,再重新安装。

4、开发工具启动方式

见各种开发工具自己的设置

如何知道内存是否修改成功:

打开tomcat管理地址:

http://localhost:8082/manager/status 

找到 JVM,其中

Max memory:为最大内存

Total memory:当前已使用内存

同一个tomcat不同项目的session共享问题(三)

需要准备的软件:

apache-tomcat-7.0.79

Redis服务器

tomcat-redis-session-manager-1.2.jar

jedis-2.5.2.jar

commons-pool2-2.0.jar

这个tomcat-redis-session-manager版本暂时只支持tomcat7.0。支持8.0的下一篇再讲。

准备的测试程序:

a.war。重新命名一个b,都放到webapps下。

3个jar包都放到tomcat的lib下。

需要修改的配置:

修改两tomcat的context.xml:

<Context>  
  
    <!-- Default set of monitored resources -->  
    <WatchedResource>WEB-INF/web.xml</WatchedResource>  
  
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->  
    <!-- 
    <Manager pathname="" /> 
    -->  
  
    <!-- Uncomment this to enable Comet connection tacking (provides events  
         on session expiration as well as webapp lifecycle) -->  
    <!-- 
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
    -->  
  
  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  
  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
   host="localhost"  
   port="6379"  
   database="0"  
   maxInactiveInterval="60" />  
</Context>

这里的host是指redis的服务器所在ip

启动redis服务


网上说这样已经能看到效果了。但我自己试了不知道,为什么哪里有问题。为此我还改了一个地方:

tomcat 的 server.xml,找到 Host 节点,加入配置

<Context path="/a"  debug="9" reloadable="true" sessionCookiePath="/" />  
<Context path="/b"  debug="9" reloadable="true" sessionCookiePath="/" />

这个是为了让2个程序共享一个sessionid。然后再重新启动tomcat就可以了。


a.war.zip

下载之后去掉.zip就行。

tomcat 集群配置,Session复制共享(一)

tomcat不同服务器之间session共享是分布式环境必须的课题。

同步方案有许多种,这篇先来说说tomcat自带的方法

本配置在tomcat7上验证通过。通过此方法配置的集群,session信息将会被自动复制到各个节点。

官方文档:

http://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html

1、配置Server.xml

在Server.xml中,找到被注释<Cluster/>节点,修改为如下:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
bind="127.0.0.1"
address="228.0.0.4"<!--保留ip,用于广播-->
port="45564"
frequency="500"
dropTime="3000"/> 
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001"<!--如果是在同一台机器上的两个tomcat做负载,则此端口则不能重复-->
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

2、修改web.xml

在web.xml中,标志为 <distributable/>

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> 
<display-name>session</display-name> 
<distributable/> 
</web-app>