我是靠谱客的博主 端庄野狼,最近开发中收集的这篇文章主要介绍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" prestartminSpareThreads="true"
               maxProcessors="1200" acceptCount="1000"
               enableLookups="false" compression="on"
               redirectPort="8443" />

connectionTimeout:超时时间,单位毫秒,默认值为60000,即60秒
maxThreads:tomcat:起动的最大线程数,默认值为200,启用线程池
minSpareThreads:Tomcat初始化时创建的线程数。默认值4,启用线程池

prestartminSpareThreads:是否启用最小线程启动

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

server:修改http的head中服务器的类型,隐藏Tomcat,如修改成 “ server="Microsoft-IIS/8.5" ”

在这里线程池的启动可以写成如下:

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="1000" minSpareThreads="100" prestartminSpareThreads="true"/>
    <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
               connectionTimeout="15000" URIEncoding="UTF-8"
               acceptCount="2000" enableLookups="false" compression="on"
               redirectPort="8443" server="Microsoft-IIS/8.5"/>

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

转载于:https://blog.51cto.com/jim123/1969885

最后

以上就是端庄野狼为你收集整理的Tomcat中常用的调优的全部内容,希望文章能够帮你解决Tomcat中常用的调优所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部