tomcat 调优攻略
2015-06-23 17:47
316 查看
1、JDK内存优化:
Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS='-Xms[初始化内存大小] -Xmx[可以使用的最大内存] 一般说来,你应该使用物理内存的 80%作为堆大小。
环境 tomcat-7.0.55
加在这个位置
rem ----- Execute The Requested Command ---------------------------------------
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
echo Using CATALINA_BASE: "%CATALINA_BASE%"
参数说明:
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
2.windows服务启动
如果你的tomcat是注册为windows服务并且是以服务方式启动的,那么上面的方法就无效了,因为这时tomcat启动是读取注册表的参数,而不是读取批处理文件的参数,这时我们有两种方法来设置jvm参数。
第一种比较简单,tomcat为我们提供了一个设置启动参数的窗体,双击tomcat_home/bin目录下的tomcat6w.exe,如图
如果提示没有安装此服务,把服务名称改成和tomcatxw.exe一样的tomcatx就好了
查看tomcat的JVM内存有两种方法
《第一种》
第二种》
tomcat7中默认没有用户的,我们首先要添加用户有:
修改E:\tomcat\conf\tomcat-users.xml
检查webapps下是否有Manager目录,一般发布时我们都把这个目录删除了,现在看来删除早了,在调试期要保留啊!
访问地址:
http://localhost:8080/manager/status
查看内存配置情况,经测试-Xms512m -Xmx512m与-Xms1024m-Xmx1024m内存使用情况不一样,使用1024的时候有一项内存使用99%。所以看来这个设置多少与实际机器有关,需要Manager进行查看后确定。
在启动Tomcat中发现,有同志发布程序时把我们在TOMCAT7中引用的外部JAR包重复发布到LIB目录下了,我们以后在发布时要检查LIB下是不是包括
el-api.jar jsp-api servlet-api,特别注意的是最后一个servlet-api,我发现两个项目都把它拷贝到了LIB目录下!!被我删除了。
2、增大TOMAT的连接数:
connectionTimeout="2000"
redirectPort="8443" enableLookups="false"
acceptCount="5000" maxThreads="100"URIEncoding="UTF-8"/>
maxThreads:最大线程数 200
minSpareThreads:初始化建立的线程数 100
maxThreads:一旦线程超过这个值,Tomcat就会关闭不再需要的线程。
Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS='-Xms[初始化内存大小] -Xmx[可以使用的最大内存] 一般说来,你应该使用物理内存的 80%作为堆大小。
环境 tomcat-7.0.55
加在这个位置
rem ----- Execute The Requested Command ---------------------------------------
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
echo Using CATALINA_BASE: "%CATALINA_BASE%"
参数说明:
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
2.windows服务启动
如果你的tomcat是注册为windows服务并且是以服务方式启动的,那么上面的方法就无效了,因为这时tomcat启动是读取注册表的参数,而不是读取批处理文件的参数,这时我们有两种方法来设置jvm参数。
第一种比较简单,tomcat为我们提供了一个设置启动参数的窗体,双击tomcat_home/bin目录下的tomcat6w.exe,如图
如果提示没有安装此服务,把服务名称改成和tomcatxw.exe一样的tomcatx就好了
查看tomcat的JVM内存有两种方法
《第一种》
<span style="font-size:14px;"><%@ page contentType="text/html;charset=GBK"%> <% out.println("总 内 存: " +java.lang.Runtime.getRuntime().totalMemory() / 1024 / 1024 +"MB"); out.println("<br>"); out.println("可用内存: " +java.lang.Runtime.getRuntime().freeMemory() /1024 / 1024 + "MB");%></span>
第二种》
tomcat7中默认没有用户的,我们首先要添加用户有:
修改E:\tomcat\conf\tomcat-users.xml
检查webapps下是否有Manager目录,一般发布时我们都把这个目录删除了,现在看来删除早了,在调试期要保留啊!
访问地址:
http://localhost:8080/manager/status
查看内存配置情况,经测试-Xms512m -Xmx512m与-Xms1024m-Xmx1024m内存使用情况不一样,使用1024的时候有一项内存使用99%。所以看来这个设置多少与实际机器有关,需要Manager进行查看后确定。
在启动Tomcat中发现,有同志发布程序时把我们在TOMCAT7中引用的外部JAR包重复发布到LIB目录下了,我们以后在发布时要检查LIB下是不是包括
el-api.jar jsp-api servlet-api,特别注意的是最后一个servlet-api,我发现两个项目都把它拷贝到了LIB目录下!!被我删除了。
2、增大TOMAT的连接数:
connectionTimeout="2000"
redirectPort="8443" enableLookups="false"
acceptCount="5000" maxThreads="100"URIEncoding="UTF-8"/>
maxThreads:最大线程数 200
minSpareThreads:初始化建立的线程数 100
maxThreads:一旦线程超过这个值,Tomcat就会关闭不再需要的线程。
相关文章推荐
- Tomcat 高并发 server.xml
- Jetty 的工作原理以及与 Tomcat 的比较
- 安装Tomcat插件到Eclipse
- eclipse中tomcat插件出现OutOfMemoryError错误的解决办法
- 安装 Tomcat 7.0 在 RHEL5.4 x64
- Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
- 免安装版Tomcat配置用户登录项目管理界面
- Tomcat server.xml参数详解
- tomcat基本安全加固与优化
- 如何在eclipse上配置tomcat
- Tomcat connector元素常用配置(最大连接数等)
- nginx+tomcat重复请求
- Tomcat配置多个端口号或多个应用
- jndi配置连接池_成功案例
- OpenLayers跨域请求WFS服务在Tomcat环境下的实现cgi
- MAVEN+TOMCAT积累
- java模拟post传输文件到tomcat服务器端servlet接收
- Tomcat--startup.bat文件
- Tomcat--startup.bat文件
- Tomcat默认连接超时时间