Tomcat性能调整

第一种 - 提高JVM栈内存

 可以参照 工作中常遇到的Tomcat内存溢出及解决方案

 

第二种 - 解决JRE内存泄露

内存泄漏往往会影响性能表现,我们使用tomcat版本6.0.26及以上版本就可以解决这个问题,因为它包含了一个监听器来处理JRE和PermGen的内存泄漏。使用的监听器是

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

 

 

第三种 – 线程池设置

线程池指定Web请求负载的数量,因此,为获得更好的性能这部分应小心处理。可以通过调整连接器属性“maxThreads”完成设置。maxThreads的值应该根据流量的大小,如果值过低,将有没有足够的线程来处理所有的请求,请求将进入等待状态,只有当一个的处理线程释放后才被处理;如果设置的太大,Tomcat的启动将花费更多时间。因此它取决于我们给maxThreads设置一个正确的值

我们可以修改Tomcat默认配置来提高线程处理能力。apache-tomcat-7.0.42-windows-x64其默认配置

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>

 

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 

修改后

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="250" minSpareThreads="4" maxHttpHeaderSize="8192"
/>

<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" enableLookups="false" acceptCount="100" 

disableUploadTimeout="true"/>

 在上述配置中,maxThreads值设定为“250”,这指定可以由服务器处理的并发请求的最大数量。任何多出的并发请求将收到“拒绝连接”的错误提示,直到另一个处理请求进程被释放。错误看起来如下,

org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) are
currently busy, waiting. Increase maxThreads (250) or check the servlet status

 如果应用提示上述错误,务必检查上述错误是否是由于单个请求花费太长时间造成的,这个问题的原因是这样的,有时候如果数据库连接不释放的话,进程将不会处理其它请求。

enableLookups      若设为true, 则支持域名解析,可把 ip 地址解析为主机名。为了提高处理能力,应设置为 false。

注意: 如果请求的数量超过了“750”,这将不是意味着将maxThreads属性值设置为“750”,它意外着最好使用“Tomcat集群”的多个实例。也就是说,如果有“1000”请求,两个Tomcat实例设置“maxThreads= 500”,而不在单Tomcat实例的情况下设置maxThreads=1000。 

 

第四种 - 压缩

在server.xml配置文件中设置压缩的选项。压缩可以在connector像如下设置中完成

<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" compression="on"
 compressionMinSize="2048" 

compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />

 

参数说明

compression 打开压缩功能   

compressionMinSize   启用压缩的输出内容大小,这里面默认为2KB

compressableMimeType 压缩类型

connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

 

 

你可能感兴趣的:(tomcat)