一、前言
对于tomcat的优化主要包括两个方面,一个是对Tomcat启动参数进行优化配置,另一个是Tomcat容器内的优化配置,下面分别用具体详细的参数配置说明进行分析(更多推荐“tomcat的HTTPS安全通道配置”、源码分析等)
二 、Tomcat内存优化
tomcat启动参数设置,主要在其bin目录下catalina文件(window环境对象catalina.bat、linux环境对应catalina.sh)进行设置,在文件头部复制下面参数示例,
1. Window环境
详细的配置参数如下,关于参数的详细说明参见"关于jvm内存优化部分"set JAVA_OPTS=-server -Xms1400M -Xmx1400M -Xss512k @b@-XX:+AggressiveOpts -XX:+UseBiasedLocking @b@-XX:PermSize=128M -XX:MaxPermSize=256M @b@-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 @b@-XX:+UseConcMarkSweepGC -XX:+UseParNewGC @b@-XX:+CMSParallelRemarkEnabled @b@-XX:+UseCMSCompactAtFullCollection@b@-XX:LargePageSizeInBytes=128m @b@-XX:+UseFastAccessorMethods @b@-XX:+UseCMSInitiatingOccupancyOnly @b@-Djava.awt.headless=true
简单配置,如下:set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m
标准参数(-),所有JVM都必须支持这些参数的功能,而且向后兼容;例如:
-client——设置JVM使用Client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试;在32位环境下直接运行Java程序默认启用该模式。
-server——设置JVM使Server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的JDK环境下默认启用该模式。
非标准参数(-X),默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容;
非稳定参数(-XX),此类参数各个JVM实现会有所不同,将来可能会不被支持,需要慎重使用;
2. Linux环境
详细配置如下:JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k @b@-XX:+AggressiveOpts @b@-XX:+UseBiasedLocking @b@-XX:PermSize=128M -XX:MaxPermSize=256M @b@-XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 @b@-XX:+UseConcMarkSweepGC -XX:+UseParNewGC @b@-XX:+CMSParallelRemarkEnabled @b@-XX:+UseCMSCompactAtFullCollection@b@-XX:LargePageSizeInBytes=128m @b@-XX:+UseFastAccessorMethods @b@-XX:+UseCMSInitiatingOccupancyOnly @b@-Djava.awt.headless=true "
简单配置如下:JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
3. 单类或jar包java.exe -Xms128m -Xmx800m Main
三、Tomcat连接器优化
tomcat本身处理最大并发有服务器系统本身上限决定(一般window的1000左右,linux为2000左右),但是默认设置只有25,因此打开其conf目录下server.xml文件,定位到如下内容,默认是比较简单的配置:
其实详细的默认缺省配置应该是:
URIEncoding:设置含有中文名的文件的url编码方式
minSpareThreads:初始化空闲线程数
maxSpareThreads:最大允许空闲线程存活数
connectionTimeout:网络连接超时时间毫秒数
maxThreads:tomcat可创建的最大线程并发数
acceptCount:当线程池满了,即到达maxThreads设置的值,还可以接受客户端请求数到临时队列等待区,等待线程释放后依次排队使用
maxProcessors与minProcessors:window的1000左右,linux为2000左右
compression:给Tomcat配置gzip压缩(HTTP压缩)功能,完整配置如下:compression="on" compressionMinSize="2048" @b@compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain
HTTP 压缩可以大大提高浏览网站的速度,客户端请求资源后,服务器端将文件压缩,由客户端负责解压缩。相对于普通过程(HTML,CSS,Javascript,Text) ,节省40%左右流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出内容也能进行压缩,压缩效率非常高。1)compression="on" 开启压缩功能2)compressionMinSize="2048" 设置压缩的输出内容大小,默认为2KB3)noCompressionUserAgents="gozilla, traviata" 对于指定浏览器,不启用压缩4)compressableMimeType="text/html,text/xml" 压缩类型
四、NIO配置
默认配置BIO方式兼容版本,NIO(No-blocking I/O)从JDK 1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞I/O操作的API被引入,如需配置如下
将默认service.xml配置
修改为
tomcat,配置,性能调优,jvm,内存优化,Tomcat,连接数,内存溢出,nio,bio,Http11NioProtocol