Tomcat中常用的调优

在平时使用Apache、Nginx或者是其他的提供相关Web服务软件中都有相应的性能模块调优修改,而在Tomcat中也有相应的性能调优修改的配置,在这里就简单的说一说比较常用的几个Tomcat中的性能调优配置参数,在Tomcat中调优参数可以分为2个部分:1、在 Tomcat中的二进制文件夹bin目录下的catalina.sh或catalina.bat中添加修改配置tomcat使用运行参数;2、在Tomcat的conf文件夹中配置修改server.xml中的容器。

一、tomcat使用运行参数catalina.sh调优

修改catalina.sh脚本,添加修改一下JAVA_OPTS变量参数:
JAVA_OPTS="$JAVA_OPTS -Xms3072m -Xmx3072m -Xmn1536m\
-XX:PermSize=384m -XX:MaxPermSize=384m -XX:+UseConcMarkSweepGC\
-XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=500\
-XX:+CMSClassUnloadingEnabled -XX:+CMSClassUnloadingEnabled -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

-server:tomcat默认是以一种叫java –client的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的性能更优
-Xms–Xmx:JVM内存设置,JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
 空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制,建议把最大和最小设置成一样有利于JVM的垃圾回收机制
–Xmn:设置新生代,整个堆大小=新生代大小 + 年老代大小 + 持久代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8
-XX:每当JDK版本升级时,你的JVM都会使用最新加入的优化技术
-XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64
-XX:MaxPermSize:设置永生代内存初始大小,即最大非堆内存的大小,默认是物理内存的1/4
-XX:+UseConcMarkSweepGC:CMS gc,这一特性只有jdk1.5即后续版本才具有的功能,它使用的是gc估算触发和heap占用触发
-XX:+UseCMSCompactAtFullCollection:在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使 memory 碎片减少
-XX:+UseParNewGC:对新生代采用多线程并行回收,这样收得快
-XX:+CMSClassUnloadingEnabled:CMS收集器默认不会对永久代进行垃圾回收
-XX:CMSMaxAbortablePrecleanTime:CMS GC需要经过较多步骤才能完成一次GC的动作,在minor GC较为频繁的情况下,很有可能造成CMS GC尚未完成,从而造成concurrent mode failure,可以通过-XX: CMSMaxAbortablePrecleanTime设置较小的值,以保证CMS GC尽快完成对象的回收,避免concurrent mode failure的现象,尤其是在JDK 5.0+、6.0+的有些版本在CMS-concurrent-abortable-preclean-start和CMS-concurrent-abortable-preclean这两步间有可能会耗费很长的时间,导致可回收的旧生代的对象很长时间后才被回收,这是Sun JDK CMS GC的一个bug

二、Tomcat的server.xml配置文件

在Tomcat中的常用配置性能调优配置如下:
    <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="15000" maxThreads="1000" minSpareThreads="100"
              maxProcessors="1200" acceptCount="1000"
              enableLookups="false" compression="on"
              redirectPort="8443" />

connectionTimeout:超时时间,单位毫秒,默认值为60000,即60秒
maxThreads:tomcat:起动的最大线程数,默认值为200
minSpareThreads:Tomcat初始化时创建的线程数。默认值4
maxProcessors:Tomcat运行时允许创建的最大线程数,默认值为75,一般根据实际生产环境修改
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100,web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右,通常该值设置同maxThreads一样
enableLookups:是否反查域名,默认值为true。为了提高处理能力,应设置为false
compression:压缩传输,取值on/off/force,默认值off
redirectPort:SSL的重定向端口,默认8443

总之,在平时需要根据实际生产情况修改,在Tomcat合理的性能调优后,会对Tomcat的总体性能会极大的提升。

更多Tomcat相关教程见以下内容

CentOS 6.6下安装配置Tomcat环境 

RedHat Linux 5.5安装JDK+Tomcat并部署Java项目   

Tomcat权威指南(第二版)(中英高清PDF版+带书签)   

Tomcat 安全配置与性能优化  

Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案  

CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6b9ef9f967820ca87e4c4614e7a3e830.html