tomcat性能优化实例

生产配置实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1000"
minSpareThreads="100"
maxSpareThreads="200"
acceptCount="900"
disableUploadTimeout="true"
connectionTimeout="20000"
URIEncoding="UTF-8"
enableLookups="false"
redirectPort="8443"
compression="on"
compressionMinSize="1024"
compressableMimeType="text/html,text/xml,text/css,text/javascript"/>

参数说明:
org.apache.coyote.http11.Http11NioProtocol:调整工作模式为Nio
有三种工作模式:Bio、Nio和Apr
Bio(Blocking I/O):默认工作模式,阻塞式I/O操作,没有任何优化技术处理,性能比较低。
Nio(New I/O or Non-Blocking):非阻塞式I/O操作,有Bio有更好的并发处理性能。
Apr(Apache Portable Runtime,Apache可移植运行库):首选工作模式,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
tomcat利用基于Apr库tomcat-native来实现操作系统级别控制,提供一种优化技术和非阻塞式I/O操作,大大提高并发处理能力。但是需要安装apr和tomcat-native库。

1
2
3
4
5
6
7
8
9
10
11
maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。
minSpareThreads:最小空闲线程数。
maxSpareThreads:最大空闲线程数,如果超过这个值,会关闭无用的线程。
acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。
disableUploadTimeout:禁用上传超时时间
connectionTimeout:连接超时,单位毫秒,0代表不限制
URIEncoding:URI地址编码使用UTF-8
enableLookups:关闭dns解析,提高响应时间
compression:启用压缩功能
compressionMinSize:最小压缩大小,单位Byte
compressableMimeType:压缩的文件类型

调整JVM内存大小:
在catalina.sh增加JAVA_OPTS=’-Xms512m -Xmx1024m -XX:PermSize=128m-XX:MaxPermSize=256m’
-Xms JVM初始最小堆内存,默认为物理内存1/64,不要设置过大,否则增加回收时间(暂停应用),相对频率少,相反,频率高。
-Xmx JVM最大允许堆内存大小,默认为物理内存1/4
-XX:PermSize JVM初始分配非堆内存大小
-XX:MaxPermSize JVM最大允许分配的非堆内存