tomcat性能优化整理
1.JVM参数调优
-Xms < size > 表示JVM初始化堆得大小
-Xmx < size > 表示JVM堆的最大值
这两个值的大小一般根据需要进行设置
当应用程序所需要的内存超过堆得最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中设置 JAVA_OPTS=’-Xms256m -Xmx=512m’,表示初始化内存大小为256m,可用内存最大值为512m。
2.禁用DNS查询
当web程序想要记录客户端信息时,它也会记录服务器的IP地址,或者通过域名服务器查找机器名转换为IP地址。
DNS查询需要占用网络,并且可能从很多很远的服务器上获取ip,或者是从根本不起作用的服务器上获取IP的过程,这样一来就会消耗一定的时间。为了消除DNS查询带来的性能消耗,我们可以关闭DNS查询。
方式是修改service.xml中 的enableLookups的参数值
Tomcat4
<Connector
className="org.apache.coyote.tomcat4.CoyoteConnector"port="80"
minProcessors="5"maxProcessors="75"enableLookups="false"redire
ctPort="8443"
acceptCount="100"debug="0"connectionTimeout="20000"
useURIValidationHack="false"disableUploadTimeout="true"/>
Tomcat5
<Connectorport="80"maxThreads="150"minSpareThreads="25"
maxSpareThreads="75"enableLookups="false"redirectPort="8443"
acceptCount="100"debug="0"connectionTimeout="20000"
disableUploadTimeout="true"/>
3.调整线程数
通过应用程序的连接器(Con nector)进行性能控制,参数是创建的处理请求的线程数。Tomcat 通过线程池加速响应速度来处理请求。在java 中线程是程序运行时的路径,是在一个程序中与其他控制线程无关的、能够独立运行的代码块。他们共享相同的地址空间,多线程帮助程序员写出CPU最大利用率的程序,使空闲时间保持最低,从而接收更多的请求。
4.如何加大tomcat连接数
在tomcat配置文件service.xml 中 配置中。与配置连接数相关的参数有:
minProcessors: 最小空闲连接线程数,用于提高系统处理性能,默认值是10;
maxProcessors:最大空闲连接线程数,即并发处理的最大线程数,默认值是75;
acceptCount: 允许的最大连接数,应大于等于maxProcessors,默认值为100;
enableLookups: 是否反查域名,取值为ture或者false,为了提高处理性能,建议设置为false (上面有解释过原因);
connectionTimeout: 网络连接超时。单位:毫秒ms, 设置为0表示永不超时,但是这样设置是有隐患的,通常设置为3000ms。
web Server 允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux 是1000个左右。
5.怎样加大tomcat内存
首先检查程序有没有陷入死循环,这个问题主要还是由java.lang.OutOfMemoryError:Java heap space引起的。第一次出现这样的问题以后,引发了其他问题,
可能是java堆栈设置太小的原因,解决办法如下:
- 设置环境变量
手动设置 Heap size
修改TOMCAT_HOME/bin/catalina.sh
setJAVA_OPTS=-Xms32m-Xmx512m
根据自己机器的内存进行修改 - java-Xms32m-Xmx800m className
就是在执行java类文件时加上这个参数,其中className 是需要执行的类名。
6. tomcat中如何禁止列目录下的文件
在** {tomcat_home}/conf/web.xml **把listings的参数设置为false即可。
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
7.Tomcat 有几种部署方式
共有4中部署方式
- 第一种方式:
在tomcat 的conf目录中,在server.xml 中 节点中添加
<Context path="/hello"
docBase="D:/eclipse3.2.2/forwebtoolsworkspacehello/WebRoot"deb
ug="0"
privileged="true">
</Context>
- 第二种方式:
将web项目文件拷贝到webapp 目录下 - 第三种方式
在conf目录中,Catalina(注意大小写)/ localhost目录,在该目录中新建一个xml文件,名字可随意取,内容如下:
<Context path="/hello"docBase="D:eclipse3.2.2forwebtoolsworksp
aceheloWebRoot"
debug="0"privileged="true">
</Context>
- 第四种方式
可以用tomcat 后台管理控制器,一般tomcat都打开了。直接上传war就行。
8.tomcat 其他优化经验
- 去掉对web.xml 文件的监视,把jsp提前编译成servlet,有多于物理内存情况下,加大对tomcat使用的JVM的内存。
- 服务器资源
服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。 - 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理的速度
- 利用缓存和压缩。
对于静态页面最好是能缓存起来,这样就不必每一次都从磁盘上读。可采用Nginx 作为缓存服务器,将图片、css、js文件都进行了缓存。有效的减少了后端tomcat的访问。 - 采用集群
单个服务器的性能总是有限的,最好的办法自然是横向扩展,那么组建tomcat集群是有效提升性能的手段。 - 优化tomcat 参数
以tomcat7 参数配置为例,修改conf/server.xml 文件,主要是优化连接配置,关闭DNS查询(上面有解释)
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="500"
minSpareThreads="20"
acceptCount="100"
disableUploadTimeout="true"
enableLookups="false"
URIEncoding="UTF-8"/>