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性能调优的主要内容,如果未能解决你的问题,请参考以下文章