windows下tomcat转载服务设置

在windows下将tomcat装载成系统服务,经常会遇到到java虚拟机内存不足的报错。通常都是在catalina.bat中添加java虚拟机选项来完成,例如下面

set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

但是设置catalina.bat只会在通过tomcat的bin目录下的startup.bat或者catalina.bat两个脚本来启动才会生效,如果是通过service.bat脚本装载成系统服务不会读取这两个脚本中的设置,转载成系统服务的tomcat的java虚拟机选项在装载成系统服务的时候就确定了,需要通过修改service.bat中的参数重新装载系统服务,或者使用bin目录下的tomcat7.exe(我用的是tomcat7)程序来重新设置服务。其实不论是通过脚本开启tomcat还是转载成服务开启tomcat最终都是调用tomcat7.ext来启动tomcat的。tomcat7.exe的详细用法查看官网文档

http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html#Command_line_arguments

下面通过修改service.bat脚本来设置转载成系统服务的tomcat的选项
查找service.bat中rem More extra parameters,在该注释下面就是设置转载成服务时的选项,下面这行就是设置java虚拟机选项的地方,在行尾的 –JvmMs 128 –JvmMx 256  就设置tomcat虚拟机初始化内存和最大内存的参数,如果将这两个选项去掉,tomcat7会自动都设置成1024m,

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;" --JvmMs 128 --JvmMx 256

如果要设置其他选项例如-XX:PermSize=512m -XX:MaxPermSize=512m 需要在双引号之间加入设置项,多个设置项使用分号隔开,但是不能在双引号直接设置 这两个选项 -Xms1024m -Xmx1024m,因为会被最后的 –JvmMs 和 –JvmMx覆盖掉,即在最后把这两个选项去掉也会被设置成1024,设置结果如下

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;-XX:PermSize=128m;-XX:MaxPermSize=256m" --JvmMs 256 --JvmMx 512

如果在设置完成后想查看是否生效,可以使用Java VisualVMl来查看,并监视java虚拟机的运行情况。首先要下载catalina-jmx-remote.jar 这个jar包并放到tomcat的lib目录下。使用方法查看官网

http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html

如果是希望通过系统服务启动tomcat时就开启远程监控功能,需要在service.bat中加入设置选项,结果如下

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;-XX:PermSize=128m;-XX:MaxPermSize=256m;-Dcom.sun.management.jmxremote;-Dcom.sun.management.jmxremote.port=8010;-Dcom.sun.management.jmxremote.ssl=false;-Dcom.sun.management.jmxremote.authenticate=false" --JvmMs 256 --JvmMx 512

其中的 -Dcom.sun.management.jmxremote.port=8001是设置远程监控的端口,不能与其他端口冲突

如果是想通过在使用startup.bat或者catalina.bat脚本启动tomcat时开启监控,那么就按照官网上说的在bin目录下创建setenv.bat然后在其中添加如下

set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

在windows下进入jdk下的bin目录中,双击打开jvisualvm.exe
截图00
右击远程,点击“添加远程主机”
截图01
输入tomcat服务器的ip
截图02
右击远程主机,点击“添加JMX连接”
截图03
输入设置的端口点确定
截图04
完成收双击创建的JMX连接
截图05
可以看到设置的参数了

发表评论