zoukankan      html  css  js  c++  java
  • TOMCAT 8.5 配置优化以及JVM配置(windows server)

    下载官方的tomcat,我这里用的是TOMCAT 8.5.46,然后解压出来,解压后的目录如下图

    一、server.xml配置优化

    进入conf目录,打开server.xml 文件

     1. 找到 <Executor name="tomcatThreadPool" .../>,将其修改如下

    <Executor name="tomcatThreadPool" 
    namePrefix="catalina-exec-" 
    maxThreads="500" 
    minSpareThreads="80"
    maxQueueSize="100" 
    maxIdleTime="60000"
    prestartminSpareThreads="true" />

    maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断
    minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25

    maxQueueSize:最大的等待队列数,超过则拒绝请求

    maxIdleTime:如果当前线程大于初始化线程,那空闲线程存活的时间,单位毫秒,默认60000=60秒=1分钟。
    prestartminSpareThreads:在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了


    2.找到 <Connector port="8080" .../>,将其修改如下

    <Connector executor="tomcatThreadPool" port="80" 
    redirectPort="8443"
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
    connectionTimeout="20000" 
    maxConnections="10000" 
    enableLookups="false" 
    acceptCount="100" 
    maxPostSize="10485760" 
    maxHttpHeaderSize="65536" 
    compression="on" 
    disableUploadTimeout="true" 
    compressionMinSize="2048"
    acceptorThreadCount="2" 
    processorCache="20000" 
    tcpNoDelay="true" 
    connectionLinger="5" 
    URIEncoding="utf-8" 
    server="Server Version 11.0"
    compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" />

    protocol :TOMCAT8以上使用org.apache.coyote.http11.Http11Nio2Protocol,效率会更高,如果启动是出现错误,请使用org.apache.coyote.http11.Http11NioProtocol。有可能是改了端口8005、8009导致。

    connectionTimeout:Connector接受一个连接后等待的时间(milliseconds),默认值是60000。
    maxConnections:这个值表示最多可以有多少个socket连接到tomcat上
    enableLookups:禁用DNS查询
    acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100。
    maxPostSize:设置由容器解析的URL参数的最大长度,-1(小于0)为禁用这个属性,默认为2097152(2M) 请注意, FailedRequestFilter 过滤器可以用来拒绝达到了极限值的请求。
    maxHttpHeaderSize:http请求头信息的最大程度,超过此长度的部分不予处理。一般8K。
    compression:是否启用GZIP压缩 on为启用(文本数据压缩) off为不启用, force 压缩所有数据
    disableUploadTimeout:这个标志允许servlet容器使用一个不同的,通常长在数据上传连接超时。 如果不指定,这个属性被设置为true,表示禁用该时间超时。
    compressionMinSize:当超过最小数据大小才进行压缩
    acceptorThreadCount:用于接受连接的线程数量。增加这个值在多CPU的机器上,尽管你永远不会真正需要超过2。 也有很多非维持连接,您可能希望增加这个值。默认值是1。
    processorCache:协议处理器缓存的处理器对象来提高性能。 该设置决定多少这些对象的缓存。-1意味着无限的,默认是200。 如果不使用Servlet 3.0异步处理,默认是使用一样的maxThreads设置。 如果使用Servlet 3.0异步处理,默认是使用大maxThreads和预期的并发请求的最大数量(同步和异步)。
    tcpNoDelay:如果设置为true,TCP_NO_DELAY选项将被设置在服务器套接字,而在大多数情况下提高性能。这是默认设置为true。
    connectionLinger:秒数在这个连接器将持续使用的套接字时关闭。默认值是 -1,禁用socket 延迟时间。
    URIEncoding:网站一般采用UTF-8作为默认编码。
    server:隐藏Tomcat版本信息,首先隐藏HTTP头中的版本信息
    compressableMimeType:配置想压缩的数据类型

    二、配置logging.properties文件

       进入conf目录,打开logging.properties文件,将所有encoding = UTF-8这行前面加上‘#’,将此行注释掉,否则在运行tomcat时,控制台里的中文全部是乱码,也可以将UTF-8改成GBK.

    三、配置JVM

         进入bin目录,新建一个setevn.bat文件,然后用记事本打开,输入下面的配置信息

           

    SET JAVA_HOME=D:Javajdk1.8.0_221jre
    
    SET JAVA_OPTS=-server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=12 -Xloggc:../logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+DisableExplicitGC

     -server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的 
     -Xms4096m:设置JVM最小内存为2048m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
     -Xmx4096m:设置JVM最大可用内存为2048MB

     -Xmn2048m:设置JVM新生代大小(JDK1.4之后版本,此设置等同于 -XX:NewSize 和 -XX:MaxNewSize)。一般-Xmn的大小是-Xms的1/2左右,不要设置的过大或过小, 过大导致老年代变小,频繁Full GC,过小导致minor GC频繁。如果不设置-Xmn,可以采用-XX:NewRatio=2来设置,也是一样的效果
     -XX:NewSize:设置新生代大小
     -XX:MaxNewSize:设置最大的新生代大小

     -XX:PermSize:设置永久代大小
     -XX:MaxPermSize:设置最大永久代大小
     -XX:SurvivorRatio:在年轻代中,from(Survivor1)、to(Survivor2)与Eden的比值,若-XX:SurvivorRatio=10,由于from、to内存大小相等,from 、to分别占Young Generation的空间的1/12,Eden占10/12;
     
     -XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与年老代的比值(除去永久代)。设置为 4,则年轻代与年老代所占比值为 1:4,年轻代占整个堆栈的 1/5; Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。

     -XX:MaxTenuringThreshold=10:设置垃圾最大年龄,默认为:15。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。需要注意的是,设置了 -XX:MaxTenuringThreshold,并不代表着,对象一定在年轻代存活10次才被晋升进入老年代,它只是一个最大值,事实上,存在一个动态计算机制,计算每次晋入老年代的阈值,取阈值和MaxTenuringThreshold中较小的一个为准。

     -Xloggc:../logs/gc.log  GC日志文件位置

    -XX:+DisableExplicitGC:这个将会忽略手动调用 GC 的代码使得 System.gc() 的调用就会变成一个空调用,完全不会触发任何 GC
     注:以上-Xms -Xmx -Xmn 是按照8G的服务器内存配置的,在实际配置中,需要使用者自行调试

    判断配置是否起作用,进入bin文件夹中,打开命令行窗口,输入catalina.bat configtest,出现如下页面即代表配置成功

  • 相关阅读:
    struts 2.1.8.1的sx:datetimepicker标签出现NaN错误的原因和解决办法
    php windows与linux下的路径区别
    php递归删除文件夹
    php ffmpeg截取视频第一帧保存为图片的方法
    mysql group by使用方法注意
    PHP更新用户微信信息的方法
    PHP file_get_contents 读取js脚本的问题
    javascript采用Broadway实现安卓视频自动播放的方法(这种坑比较多 不建议使用)
    html5 textarea 写入换行的方法
    jquery swiper3自定义切换效果的方法
  • 原文地址:https://www.cnblogs.com/zhuiyue82/p/11652842.html
Copyright © 2011-2022 走看看