您的位置:首页 > 运维架构 > Tomcat

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内存有两种方法
《第一种》
<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就会关闭不再需要的线程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: