tomcat 调优总结

参考资料1:http://tech.163.com/05/0711/10/1OCH7J2000091589_6.html


因此一般建议堆的最大值设置为可用内存的最大值的80%。


  Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。


  Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:


  JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'


  需要把这个两个参数值调大。例如:


  JAVA_OPTS='-Xms256m -Xmx512m'


  表示初始化内存为256MB,可以使用的最大内存为512MB。


1.禁用DNS查询


  当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值:

Tomcat5

<Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true"/>

2.调整线程数


  另外一个可通过应用程序的连接器(Connector)进行性能控制的的参数是创建的处理请求的线程数。Tomcat使用线程池加速响应速度来处理请求。在Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。


web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。


在Tomcat5对这些参数进行了调整,请看下表:

属性名

描述

maxThreads

Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。

acceptCount

指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

connnectionTimeout

网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

minSpareThreads

Tomcat初始化时创建的线程数。

maxSpareThreads

一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。



3.加速JSP编译速度


  当第一次访问一个JSP文件时,它会被转换为Java serverlet源码,接着被编译成Java字节码。你可以控制使用哪个编译器,默认情况下,Tomcat使用使用命令行javac进行使用的编译器。也可以使用更快的编译器,但是这里我们将介绍如何优化它们。


  另外一种方法是不要把所有的实现都使用JSP页面,而是使用一些不同的java模板引擎变量。显然这是一个跨越很大的决定,但是事实证明至少这种方法是只得研究的。如果你想了解更多有关在Tomcat可使用的模板语言,你可以参考Jason Hunter和William Crawford合著的《Java Servlet Programming 》一书(O'Reilly公司出版)。


参考资料2;http://wangzi6hao.iteye.com/blog/531618



Xml代码 

    

修改tomcat/conf/server.xml配置文件为以上。


修改apache-tomcat-6.0.18\bin\catalina.bat配置文件为以下。

set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m

这一句加在

rem ---------------------------------------------------------------------------


rem Guess CATALINA_HOME if not defined

之间的位置,不要加到那些if里面去了,否则不一定会生效.

如果有疑问.可以用

echo %JAVA_OPTS%&gt;d:\JAVA_OPTS.log

来查看是否正确的设置了.

猜你喜欢

转载自jiuyuehe.iteye.com/blog/1278252