一、自身调整 (修改Tomcat自身的配置文件参数)
1、修改conf/server.xml文件中 将<Connector 标签中protocol属性值替换成:
"org.apache.coyote.http11.Http11NioProtocol"
原因:将Apache Tomcat6中支持了Java语言的特性 NIO( New I/O)打开,在tomcat6在默认的配置选项中是没有把NIO功能打开。使用NI在服务器端会有更好的性能,加强服务器端对并发处理的性能。
2、修改conf/server.xml文件中
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="500"
minSpareThreads="400" />
<Connector
executor="tomcatThreadPool"
port="8208"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="30000" // 连接超时时间默认
enableLookups="false" //不使用DNS查询减少开销
redirectPort="8443"
URIEncoding="UTF-8" //URL转码处理
acceptCount="1000" /> //指定当所有可以使用线程数都被使用时可以放到处理队列中的请求数超过这个数的请求将不予处理
二、外部环境调整
调整非Tomcat组件例如Tomcat运行的操作系统和运行Tomcat的java虚拟机。
1、 操作系统性能优化:
windows下默认打开文件数是2000; linux下是1024 vi /etc/prfile 加入ulimit -n 4096就把linux改成打开文件最大数为4096
2、jvm (-Xmx)堆的设置不要大于实际物理内存的80%;-Xmx与-Xms大小设置一样这样可以减少对系统申请的开销。Tomcat默认内存为128MB。
有关能够创建线程的最大个数的估算公式:
(MaxProcessMemory - JVMMemory - ReservedOsMemory)/ (ThreadStackSize) = Number of threads
如:2G内存、1.0GB JVM:(2GB-1.0Gb-120MB)/(1MB) = ~880 threads
预留120 为系统dll的加载开销,JDK1.5以上默认的栈大小为1M每线程
Linux :添加到catalina.sh 文件中
JAVA_OPTS= -server –Xms1024m –Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m
-client,-server 这两个参数用于设置虚拟机使用何种运行模式,一定要作为第一个参数,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。在windows上,缺省的虚拟机类型为client模式,如果要使用server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。在Linux,Solaris上缺省采用server模式。 此外,在多cup下建议用server模式。