tomcat9优化以及配置

1、server.xml优化


<Connector
port="8080"  

executor="tomcatThreadPool"
protocol="org.apache.coyote.http11.Http11NioProtocol" 
enableLookups="false"            
maxThreads="1000"               
minSpareThreads="100"                            
acceptCount="1500"               
disableUploadTimeout="true"              
connectionTimeout="20000"               
URIEncoding="UTF-8"                           
redirectPort="8443"               
compression="on"              
compressionMinSize="1024" 
useSendfile="false"
noCompressionUserAgents="gozilla, traviata"            
compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript "   />

executor tomcat线程池,同maxThreads


org.apache.coyote.http11.Http11NioProtocol:工作模式为nio,如果设成Nio2启动时会警告The NIO2 connector requires an exclusive executor to operate properly on shutdown,会影响停服等速度
maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。线程数算法涉及到吞吐量,一般单核建议100-200之间,多核按此计算累加,单进程linux下有最大1000的限制。
minSpareThreads:最小空闲线程数。
acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。
disableUploadTimeout:禁用上传超时时间
connectionTimeout:连接超时,单位毫秒,0代表不限制
URIEncoding:URI地址编码使用UTF-8
enableLookups:关闭dns解析,提高响应时间
compression:启用压缩功能
compressionMinSize:最小压缩大小,单位Byte
compressibleMimeType :压缩的文件类型

2、JAVA_OPTS

-server -Dfile.encoding=UTF-8  -XX:+UseG1GC -XX:MaxTenuringThreshold=14   -Xms1g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=256m -XX:ConcGCThreads=2 -XX:+AlwaysPreTouch 

2.1、内存区域大小

首先要调整的,就是各个分区的大小,不过这也要分垃圾回收器,我们仅看一下一些全局的参数。

  • -XX:+UseG1GC 首先,要指定JVM使用的垃圾回收器。尽量不要靠默认值去保证,要显式的指定一个。
  • -Xmx 设置堆的最大值,一般为操作系统的2/3大小。
  • -Xms 设置堆的初始值,一般设置成和Xmx一样的大小来避免动态扩容。
  • -Xmn 年轻代大小,默认新生代占堆大小的1/3。高并发快消亡场景可适当加大这个区域。对半,或者更多,都是可以的。但是在G1下,就不用再设置这个值了,它会自动调整,因为用的G1,所以并没有设
  • -XX:MaxMetaspaceSize 限制元空间的大小,一般256M足够。这一般和初始大小**-XX:MetaspaceSize**设置成一样的。可以理解成MaxPermSize
  • -XX:MaxDirectMemorySize 设置直接内存的最大值,限制通过DirectByteBuffer申请的内存,幽灵内存适当可以放大。
  • -XX:ReservedCodeCacheSize 设置JIT编译后的代码存放区大小,如果观察到这个值有限制,可以适当调大,一般够用。正常默认值就行
  • -Xss 设置栈的大小,默认为1M,已经足够用了。
  • -XX:+AlwaysPreTouch 启动时就把参数里说好了的内存全部初始化,启动时间会慢一些,但运行速度会增加。
  • -XX:SurvivorRatio 默认值为8。表示伊甸区和幸存区的比例。
  • -XX:MaxTenuringThreshold 这个值在CMS下默认为6,G1下默认为15。这个值和我们前面提到的对象提升有关,改动效果会比较明显。对象的年龄分布可以使用**-XX:+PrintTenuringDistribution**打印,如果后面几代的大小总是差不多,证明过了某个年龄后的对象总能晋升到老生代,就可以把晋升阈值设小。

G1按固定大小把内存划分为很多小区域(region),这个堆大概有2000多块;在逻辑上,某些小区域构成Eden,某些构成Survivor,某些构成老年代,这些小区域物理上是不相连的,并且构成新生代和老年代的区域可以动态改变。
可以通过命令行参数-XX:NewRatio=n来配置老年代和新生代的比例,默认为2,即比例为2:1;-XX:SurvivorRatio=n则可以配置Eden与Survivor的比例,默认为8。

G1垃圾回收器

  • -XX:MaxGCPauseMillis 设置目标停顿时间,G1会尽力达成,默认是200ms,不建议设置太低,会增加cpu的值
  • -XX:G1HeapRegionSize 设置小堆区大小。这个值为2的次幂,不要太大,也不要太小。如果是在不知道如何设置,保持默认。
  • -XX:InitiatingHeapOccupancyPercent 当整个堆内存使用达到一定比例(默认是45%),并发标记阶段就会被启动。
  • -XX:ConcGCThreads 并发垃圾收集器使用的线程数量。默认值随JVM运行的平台不同而不同。不建议修改。
  • -XX:MaxTenuringThreshold=14   提升年老代的最大临界值(tenuring threshold). 默认值为 15[每次GC,增加1岁,到15岁如果还要存活,放入Old区]

3、 catalina.out日志按日期生成

由于tomcat对rotatelogs的支持比较好,所以用rotatelogs来进行拆分

一、准备rotatelogs工具

  1. 从安装httpd的服务器上,拷贝/usr/sbin/rotatelogs文件到$CATALINA_HOME/bin/目录,并加可执行权限。
  2. 安装依赖软件 apr , 否则会报错。请见 附件3
 yum install apr apr-util -y
  1. 执行./rotatelogs -h测试rotatelogs是否工作
[tomcat@VM-99-19-centos bin]$ ./rotatelogs -h
rotatelogs: illegal option -- h
Usage: ./rotatelogs [-v] [-l] [-L linkname] [-p prog] [-f] [-t] [-e] [-c] [-n number] <logfile> {<rotation time in seconds>|<rotation size>(B|K|M|G)} [offset minutes from UTC]

二、在$CATALINA_HOME/bin/目录下创建setenv.sh,内容如下:

CATALINA_OUT_CMD="$CATALINA_BASE/bin/rotatelogs -f $CATALINA_BASE/logs/catalina.out.%Y-%m-%d.log 86400 480"

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat是一个流行的开源Java Web服务器,用于运行Java应用程序。下面是一些常见的Tomcat使用和配置建议,以及高并发优化的一些建议: 1. 安装和启动Tomcat: - 下载适合您操作系统的Tomcat版本,并按照官方文档进行安装。 - 启动Tomcat:运行bin目录下的startup.sh(Unix/Linux)或startup.bat(Windows)脚本。 2. 配置Tomcat: - server.xml:这个文件包含了Tomcat的主要配置。您可以修改端口、连接器、虚拟主机等设置。 - web.xml:这个文件位于每个Web应用程序的WEB-INF目录中,用于配置特定应用程序的Servlet、过滤器和其他设置。 3. 部署Web应用: - 将您的Java Web应用程序打包成WAR文件,然后将其放置在Tomcatwebapps目录中。 - Tomcat会自动解压WAR文件并部署应用程序。 4. 高并发优化: - 调整Tomcat的线程池配置:在server.xml中修改 `<Executor>` 元素,增加线程数以适应高并发请求。 - 使用NIO连接器:在server.xml中配置使用NIO连接器,以提高并发处理能力。 - 启用压缩功能:通过配置Tomcat启用Gzip压缩,减小传输数据量,提高响应速度。 - 使用缓存:合理配置Tomcat的静态资源缓存,减少对磁盘的访问。 - 负载均衡:使用反向代理服务器或负载均衡器将请求分发到多个Tomcat实例,以提高整体性能和可靠性。 请注意,这只是一些常见的使用、配置优化建议。具体的优化策略取决于您的应用程序和场景。在进行任何更改之前,请务必备份配置文件,并在实际环境中进行测试和性能评估。另外,官方文档和相关资源可以提供更详细的信息和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值