分类: LINUX
2011-02-12 17:36:04
Tomcat 连接器常用选项与优化
以下参数配置是从多年TOMCAT使用经验中得到的。
port: TOMCAT的服务端口,通常TOMCAT默认服务端口为8080。
maxHttpHeaderSize: 请求和响应HTTP数据头的最大尺度,单位:字节; 默认为4k。通常优化到8K。
tcpNoDelay: 如果设成true,将会被设置在服务器SOCKET上,大多情况下可以提升性能;默认为“true”.
maxThreads: 连接器能创建的最大程序线程请求数,默认为200个。该参数需要根据压力测试结果来调优。
minSpareThreads: 连接器初始化启动后创建的最小程序线程请求数,默认为4。一般调优到25。
maxSpareThreads: 允许最大的未使用程序线程请求保留数,默认为50。一般调优到75。
enableLookups: 该参数默认开启true,能够得到远程客户端的真实主机名,这个过程比较影响系统性能。因此,如果没有特别应用需要一般都使用false值关闭掉。
redirectPort: 默认端口为8443。SSL协议传输请求都会被连接器自动转到该端口处理。
acceptCount:允许等待队列长度大小,当所有线程被占用时,连接器会把后续请求放入等待 队列,如果值为800时,队列中只允许800个请求等待,如果实际请求数已经超过该队列长度,连接器将拒绝对后面的请求进行处理。
connectionTimeout: 由于HTTP协议客户端连接到服务端,如果请求在一定时间内不被处理,服务器端就会释放它。单位,毫秒。默认60000(60秒)。一般调优到20000(20秒)。
maxKeepAliveRequests: 一次连接可以进行的HTTP请求数。其默认值为100。设置为0可以支持一次连接中进行无限次HTTP请求。该处需要根据实际业务需求进行调整。
disableUploadTimeout: 禁用上传超时设置。默认true。
URIEncoding: 指定工程应用的字符编码,默认为ISO-8859-1,此处根据实际工程需求调整。
useBodyEncodingForURI: 是否让 QueryString 与 POST BODY 用相同的字节编码,默认是false。
更详细的官方解释:
JAVA 虚拟机优化配置
$JAVA_HOME/bin/catalina.sh 脚本的“#!/bin/sh”行下,加入下列参数行:
JAVA_OPTS=’-server –XMS1g –Xmx1g –Xmn800m –Xss128k –XX:+UseParallelGC –XX:ParallelGCThreads=4 –XX:PermSize=64m –XX:MaxPermSize=128m –XX:MaxTenuringThreshold=3 –XX:SurvivorRatio=4 –Xloggc:/root/tomcatlog/gc.log’
这一块包括设置JAVA堆的大小、垃圾回收机制、垃圾回收日志信息。
以下是各参数详细配置介绍:
-Xms1g:设置JVM初始内存为1g。
-Xmx1g:设置JVM最大可用内存为1g。
-Xmn800:设置年轻代大小为800。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:设置每个线程的堆栈大小。
-XX:+UseParallelGC:选择垃圾收集器为并行收集器。
-XX:ParallelGCThreads=4:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。
-XX:PermSize=64m:设置持久代大小为64m。
-XX:MaxPermSize=128m:设置持久代最大大小为128m
-XX:MaxTenuringThreshold=3:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代即被回收的概论。
-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值,如果是4则是1:4。
–Xloggc:/root/tomcatlog/gc.log’: 垃圾回收统计信息.
更详细的官方解释:
· 常见配置汇总