Tomcat性能调优

Posted 茅坤宝骏氹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat性能调优相关的知识,希望对你有一定的参考价值。

一、服务器资源

  服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。Tomcat性能可以通过提升服务器的性能来进行调优,但一般公司不会选择这种调优方式,而使用优化配置参数来调优。

 

二、配置参数调优

1. JVM参数调优,即Tomcat堆虚拟内存

2、禁用DNS查询,打开压缩

3、调整线程数 

4、改变运行模式 

5、禁用AJP连接器

 

三、JVM参数调优

-Xms<size>             表示JVM初始化堆的大小

-Xmx<size>          表示JVM堆的最大值

-Xss<size>           是指设定每个线程的堆栈大小。

-XX:PermSize<size>      JVM初始分配的非堆内存
-XX:MaxPermSize<size>       JVM最大允许分配的非堆内存,按需分配

这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中,设置JAVA_OPTS=\'-Xms256m -Xmx512m\',表示初始化内存为256MB,可以使用的最大内存为512MB。

 

四、禁用DNS查询,打开压缩

A、禁用DNS查询

为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值: 

<Connector port="8080" enableLookups="false" redirectPort="8443"  /> 

 

B、打开压缩

1)compression=”on” 打开压缩功能

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

3)noCompressionUserAgents=”gozilla, traviata” 对于以下的浏览器,不启用压缩

4)compressableMimeType=”text/html,text/xml” 压缩类型

<Connector port=”8080″ protocol=”HTTP/1.1″ compression=”on” compressionMinSize=”2048″ 
compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain” />

 

五、调整线程数 

Tomcat中可以通过修改minSpareThreads和maxSpareThreads的值来控制线程数。

minSpareThreads      最小备用线程数,tomcat启动时的初始化的线程数

maxSpareThreads     最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程

maxThreads         tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount         当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

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

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

 

六、改变运行模式 

A、tomcat的3种运行模式

(1)BIO
默认的模式,性能非常低下,没有经过任何优化处理和支持.

(2)NIO 
NIO(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。

(3)APR 
  安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能。

 

B、优化运行模式选择

(1)启动NIO模式

修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol

<Connector port="8080" enableLookups="false" redirectPort="8443"  protocol="org.apache.coyote.http11.Http11NioProtocol"/> 

(2)启动APR模式

 安装apr,apr-iconv,apr-uitl,tomcat-native。添加环境变量LD_LIBRARY_PATH。

修改server.xml配置文件中protocol修改成org.apache.coyote.http11.Http11AprProtocol

<Connector port="8080" enableLookups="false" redirectPort="8443"  protocol="org.apache.coyote.http11.Http11AprProtocol"/> 

 

七、禁用AJP连接器

  AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。

<!--   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>   -->

 

 

以上是关于Tomcat性能调优的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat调优——实战

tomcat都有哪些性能调优方法

Tomcat性能调优

Tomcat性能调优

性能调优之6-Tomcat参数调优

Tomcat 性能调优