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:\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)的更多相关文章
- PHP配置优化:php-fpm配置解读
		PHP-FPM是一个PHP FastCGI管理器,php-fpm.conf配置文件用于控制PHP-FPM管理进程的相关参数,比如工作子进程的数量.运行权限.监听端口.慢请求等等. 我们在编译安装PHP ... 
- JVM虚拟机(1)---常用JVM配置参数
		常用JVM配置参数 常用JVM配置参数主要有:Trace跟踪参数.堆的分配参数.栈的分配参数. 一.Trace跟踪参数 跟踪参数用于跟踪监控JVM,对于开发人员来讲用于JVM调优以及故障排查的. 1. ... 
- elasticsearch7.0安装及配置优化
		简单讲ES开箱即用,不用任何配置也能玩转搜索引擎:以下内容是根据易企秀线上实际使用场景进行的安装和配置,支持冷热数据分离 1.安装 Linux 环境下载安装包 curl -L -O https://a ... 
- Kafka server部署配置优化
		Kafka配置优化其实都是修改server.properties文件中参数值 1.网络和io操作线程配置优化 # broker处理消息的最大线程数 num.network.threads ... 
- Windows  Server 2008 R2组策略设置计算机配置和用户配置
		一.认识Windows Server 2008 R2域控组策略管理 1.域控服务器zhuyu.com的组策略管理默认会读取AD用户和计算机目录下创建的OU容器(组织单元), 在对应的OU容器创建对应的 ... 
- Windows Server 2003下配置IIS6.0+php5+MySql5+PHPMyAdmin环境
		配置环境: 操作系统:Windows Server 2003 sp2企业版 Web服务器:系统自带的IIS6.0 所需工具: PHP:php-5.2.12-Win32.zip(官方网址:http:// ... 
- 如何在Windows Server 2008服务器中把Tomcat启动程序添加到服务中
		转自:https://blog.51cto.com/zdytesting/2314093 tomcat所在的bin目录: 添加服务: service install service_name 移除服务 ... 
- Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)
		来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ... 
- Tomcat 优化方案 和 配置详解(转)
		转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ... 
随机推荐
- 【原】MAC安装Flutter
			系统环境要求 Flutter因为是新出的框架,所以对系统还是有一定的要求的. MacOS(64-bit) 磁盘空间:大于700M,如果算上Android Studio等编辑工具,尽量大于3G. 命令号 ... 
- mysql多字段内容并到单字段中的操作
			; SELECT 序号, ryxm `人员姓名`, cylb `成员类别`, gzdw `工作单位`, zc `职称`, GROUP_CONCAT(zzqmc) AS `著作权名称`--多字段合并到一 ... 
- CentOS自行编译升级Git
			上一篇升级Git的方式是通过更改yum的源,然后通过yum来安装,那么对于喜欢折腾的人来说,怎么通过Git的源代码自行安装呢? 我安装的是CentOS-7-x86_64-1908,自带的git是1.8 ... 
- Cookie插件的使用
			jQuery-cookie插件的使用 什么是插件? 基于jQuery的语法,按照一定规范书写,具有特定功能的脚本文件,称为插件. 插件除了js文件之外,有的还包含css文件,图片和字体等资源文件. 在 ... 
- druid链接数据库
			所用jar包 commons-beanutils-1.8.0.jarcommons-logging-1.1.3.jardruid-1.0.9.jarmysql-connector-java-5.1.1 ... 
- Flutter 快速上手定时器/倒计时及实战讲解
			本文微信公众号「AndroidTraveler」首发. 今天给大家讲讲 Flutter 里面定时器/倒计时的实现. 一般有两种场景: 我只需要你在指定时间结束后回调告诉我.回调只需要一次. 我需要你在 ... 
- AndroidStudio配置好了so文件运行却报错 java.lang.UnsatisfiedLinkError:
			报错截图: 解决方法:在app的build.gradle 下的defaultConfig里面添加过滤即可: ndk { abiFilters 'armeabi' //兼容x86cpu架构 需要什么样的 ... 
- 基于Redis扩展模块的布隆过滤器使用
			什么是布隆过滤器?它实际上是一个很长的二进制向量和一系列随机映射函数.把一个目标元素通过多个hash函数的计算,将多个随机计算出的结果映射到不同的二进制向量的位中,以此来间接标记一个元素是否存在于一个 ... 
- 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: ... 
- Python—定时任务(APScheduler实现)
			简介 APScheduler的全称是Advanced Python Scheduler.它是一个轻量级的基于Quartz的 Python 定时任务调度框架.APSche ... 
