Tomcat调优两个必选项

一 内存优化

启动时告诉JVM要一块多大内存,这块调优是效果最直接的方式,Tomcat 的启动参数位于tomcat的安装目录bin目录下,如果是Linux操作系统就是catalina.sh文件,如果是Windows操作系统那么就是catalina.bat文件。打开该文件,一般该文件头部是一堆的由##包裹着的注释文字,找到注释文字的最后一段如:

123.png

中间红色模块就是需要加入到参数:

export JAVA_OPTS="-server -Xms1000M -Xmx1000M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "

-server:这个参数表示tomcat以更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量,一定要加上。

-Xms:JVM初始化堆的大小。

-Xmx:JVM堆的最大值。

我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存,一般建议堆的最大值设置为可用内存的最大值的80%,Tomcat默认可以使用的内存为128MB,在线上稍微大点的应用项目中,这点内存是不够的,需要调大。

-Xss:是指设定每个线程的堆栈大小。这个就要依据具体程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。一般不要设置超过1M,要不然容易出现out of memory。

-XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。

-XX:MaxPermSize:设置最大非堆内存的大小,默认是物理内存的1/4。

在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。

所以一般我们最精简的配置方式就是:export JAVA_OPTS="-server -Xms1000M -Xmx1000M -Xss512k -XX:PermSize=128M -XX:MaxPermSize=256M",如果配置了这些,Tomcat基本可以飞一样的快了。

二 线程优化

我们对Tomcat启动时的命令进行了优化,增加了系统的JVM可使用数、垃圾回收效率与线程阻塞情况、增加了系统响应效率等还有一个很重要的指标,我们没有去做优化,就是吞吐量。

打开tomcat安装目录confserver.xml文件,定位到这一行:

456.png

这些都是默认的配置,我一般生产环境类似下面这样配置:

<Connector port="8989" protocol="HTTP/1.1"

               URIEncoding="UTF-8"  

               minSpareThreads="25"

               maxSpareThreads="75"

               enableLookups="false" 

               disableUploadTimeout="true"

               connectionUploadTimeout="60000"

               connectionTimeout="20000"

               acceptCount="300"  

               maxThreads="300" 

               maxProcessors="1000" 

               minProcessors="5"

               redirectPort="8443" />

 

URIEncoding=”UTF-8”:使得tomcat可以解析含有中文名的文件的url,一般jsp页面上的乱码问题也通过配置此项可以解决。

minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数。

maxSpareThreads:如果空闲状态的线程数多于设置的数目,则将这些线程中止,减少这个池中的线程总数。

enableLookups:这个功效和Apache中的HostnameLookups一样,一般设为关闭。

disableUploadTimeout:允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行,默认值为false。 这个参数一般和 connectionUploadTimeout两个参数一起配合才能设置文件上传的超时时间为60秒,毕竟文件上传可能需要消耗更多的时间,这个根据你具体业务需要自己调。

connectionTimeout:设置连接的超时值,以毫秒为单位。默认值为60000=60秒。

acceptCount:是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接拒绝连接。

minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10。

maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75。

maxThreads:可创建的最大的线程数,默认值150。

关于tomcat优化方面的调优参数很多,我们只要掌握其中一部分关键的参数是必须优化的,这样tomcat的性能基本不会太差。

 

tomcat常见的内存溢出有以下两种:

1.java.lang.OutOfMemoryError: PermGen space

解决方法:设置MaxPermSize大小。

2.java.lang.OutOfMemoryError: Java heap space

解决方法:设置-Xms和-Xmx大小。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanchufeng2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值