下载官方的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:\Java\jdk1.8.0_221\jre

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,出现如下页面即代表配置成功

TOMCAT 8.5 配置优化以及JVM配置(windows server)的更多相关文章

  1. PHP配置优化:php-fpm配置解读

    PHP-FPM是一个PHP FastCGI管理器,php-fpm.conf配置文件用于控制PHP-FPM管理进程的相关参数,比如工作子进程的数量.运行权限.监听端口.慢请求等等. 我们在编译安装PHP ...

  2. JVM虚拟机(1)---常用JVM配置参数

    常用JVM配置参数 常用JVM配置参数主要有:Trace跟踪参数.堆的分配参数.栈的分配参数. 一.Trace跟踪参数 跟踪参数用于跟踪监控JVM,对于开发人员来讲用于JVM调优以及故障排查的. 1. ...

  3. elasticsearch7.0安装及配置优化

    简单讲ES开箱即用,不用任何配置也能玩转搜索引擎:以下内容是根据易企秀线上实际使用场景进行的安装和配置,支持冷热数据分离 1.安装 Linux 环境下载安装包 curl -L -O https://a ...

  4. Kafka server部署配置优化

    Kafka配置优化其实都是修改server.properties文件中参数值 1.网络和io操作线程配置优化 # broker处理消息的最大线程数        num.network.threads ...

  5. Windows Server 2008 R2组策略设置计算机配置和用户配置

    一.认识Windows Server 2008 R2域控组策略管理 1.域控服务器zhuyu.com的组策略管理默认会读取AD用户和计算机目录下创建的OU容器(组织单元), 在对应的OU容器创建对应的 ...

  6. Windows Server 2003下配置IIS6.0+php5+MySql5+PHPMyAdmin环境

    配置环境: 操作系统:Windows Server 2003 sp2企业版 Web服务器:系统自带的IIS6.0 所需工具: PHP:php-5.2.12-Win32.zip(官方网址:http:// ...

  7. 如何在Windows Server 2008服务器中把Tomcat启动程序添加到服务中

    转自:https://blog.51cto.com/zdytesting/2314093 tomcat所在的bin目录: 添加服务: service install service_name 移除服务 ...

  8. Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)

    来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ...

  9. Tomcat 优化方案 和 配置详解(转)

    转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...

随机推荐

  1. 【原】MAC安装Flutter

    系统环境要求 Flutter因为是新出的框架,所以对系统还是有一定的要求的. MacOS(64-bit) 磁盘空间:大于700M,如果算上Android Studio等编辑工具,尽量大于3G. 命令号 ...

  2. mysql多字段内容并到单字段中的操作

    ; SELECT 序号, ryxm `人员姓名`, cylb `成员类别`, gzdw `工作单位`, zc `职称`, GROUP_CONCAT(zzqmc) AS `著作权名称`--多字段合并到一 ...

  3. CentOS自行编译升级Git

    上一篇升级Git的方式是通过更改yum的源,然后通过yum来安装,那么对于喜欢折腾的人来说,怎么通过Git的源代码自行安装呢? 我安装的是CentOS-7-x86_64-1908,自带的git是1.8 ...

  4. Cookie插件的使用

    jQuery-cookie插件的使用 什么是插件? 基于jQuery的语法,按照一定规范书写,具有特定功能的脚本文件,称为插件. 插件除了js文件之外,有的还包含css文件,图片和字体等资源文件. 在 ...

  5. druid链接数据库

    所用jar包 commons-beanutils-1.8.0.jarcommons-logging-1.1.3.jardruid-1.0.9.jarmysql-connector-java-5.1.1 ...

  6. Flutter 快速上手定时器/倒计时及实战讲解

    本文微信公众号「AndroidTraveler」首发. 今天给大家讲讲 Flutter 里面定时器/倒计时的实现. 一般有两种场景: 我只需要你在指定时间结束后回调告诉我.回调只需要一次. 我需要你在 ...

  7. AndroidStudio配置好了so文件运行却报错 java.lang.UnsatisfiedLinkError:

    报错截图: 解决方法:在app的build.gradle 下的defaultConfig里面添加过滤即可: ndk { abiFilters 'armeabi' //兼容x86cpu架构 需要什么样的 ...

  8. 基于Redis扩展模块的布隆过滤器使用

    什么是布隆过滤器?它实际上是一个很长的二进制向量和一系列随机映射函数.把一个目标元素通过多个hash函数的计算,将多个随机计算出的结果映射到不同的二进制向量的位中,以此来间接标记一个元素是否存在于一个 ...

  9. XTTS Creates Alias on Destination when Source and Destination use ASM (Doc ID 2351123.1)

    XTTS Creates Alias on Destination when Source and Destination use ASM (Doc ID 2351123.1) APPLIES TO: ...

  10. Python—定时任务(APScheduler实现)

    简介                 APScheduler的全称是Advanced Python Scheduler.它是一个轻量级的基于Quartz的 Python 定时任务调度框架.APSche ...