Tomcat调优和JVM参数优化方法是什么

76次阅读
没有评论

共计 3071 个字符,预计需要花费 8 分钟才能阅读完成。

本篇内容主要讲解“Tomcat 调优和 JVM 参数优化方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Tomcat 调优和 JVM 参数优化方法是什么”吧!

Tomcat

关于 Tomcat 是什么东西,相信大家做开发的,肯定是一点也不陌生,服务器,Web 应用服务器,一种轻量级的应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP   程序的首选。

而我们在日常的开发中,可能很大一部分我们只是知道怎么使用 Tomcat 服务器,但是却不知道怎么去调整 Tomcat 里面的各种配置参数,让 Tomcat 能够更好的运行,那么就听阿粉来给大家介绍把。

配置文件修改优化

Tomcat 在 Windows 下一般的目录都是我们下载解压出来的目录也就是 ${TOMCAT_HOME},就像这个样子  D:\develop\tomcat\apache-tomcat-7.0.88,而他的配置文件就是 conf 下的 server.xml 文件,而我们需要调优的肯定也是这个文件里面的内容。

我们就先从 Connector 来进行分析:

Connector:连接器,负责接收客户的请求,以及向客户端回送响应的消息

而我们对 Connector   优化,其实优化的就是我们在访问请求时候的并发能力,而往往并发也是我们在工作中很多时候需要去考虑的问题,而我们在这个连接器里面可以配置什么内容呢?

Connector executor= tomcatThreadPool  port= 8080  protocol= HTTP/1.1  connectionTimeout= 20000  redirectPort= 8443  /

我们最常用的就是在里面配置一个 URL 的统一编码格式比如说我们在里面配置一个 UTF-8 的编码格式。

URIEncoding:URIEncoding = UTF-8

executor : 指定这个连接器所使用的执行器(线程池)

connectionTimeout:连接超时时间

maxThreads:客户请求最大线程数

minSpareThreads:Tomcat 初始化时创建的线程数,一直会运行的线程

maxSpareThreads:Tomcat 连接器的最大空闲线程数

minProcessors:服务器创建时的最小处理线程数

maxProcessors:服务器同时最大处理线程数

enableLookups:若设为 true, 则支持域名解析,可把 ip 地址解析为主机名, 而为了减少性能的消耗的话,我们就有时候会关闭它

redirectPort:在需要基于安全通道的场合,把客户请求转发到基于 SSL 的 redirectPort 端口

acceptAccount:监听端口队列最大数,满了之后客户请求会被拒绝(不能小于 maxSpareThreads)

而我们一般最常搭配的,却是 URIEncoding   而很少的去改其他的配置,但是在面试中,肯定不会说让你去优化编码格式把,而我们修改的一定是其他的关于最大处理线程数,域名解析啦,

而我们在最终的配置就不再是上面的代码了,而变成了优化之后的:

Connector port= 8080  protocol= HTTP/1.1  connectionTimeout= 20000   超时时间,毫秒  redirectPort= 443  maxThreads= 3000   最大线程数  minSpareThreads= 20   最小空闲线程数,这里是一直会运行的线程  acceptCount= 1000   监听端口队列数  enableLookups= false   关闭 dns 解析,减少性能损耗  server= None  URIEncoding= UTF-8  /

NIO 和 BIO 还有 NIO2

其实关于 NIO 和 BIO 和 AIO 阿粉在之前已经完全都说过了,同步阻塞 IO 就是 BIO,而同步非阻塞 IO 和异步阻塞 IO 就是 NIO  ,而异步非阻塞 IO 就是 AIO 啦,

BIO:同步阻塞 IO

NIO:同步非阻塞 IO 和异步阻塞 IO

AIO:这种异步非阻塞 IO 是我们最需要注意的,是从 JDK7 及其以上才会支持的。

话不多说,直接上如何修改,

Connector connectionTimeout= 20000  port= 8080  protocol= HTTP/1.1  redirectPort= 8443 /   Connector connectionTimeout= 20000  port= 8080  protocol= org.apache.coyote.http11.Http11NioProtocol  redirectPort= 8443 /

网上有人说,从 Tomcat8 以上就是 NIO 模式了,但是实际情况好像是没有,还是需要自己手动去换成 NIO 模式。

关于 Tomcat 的优化,阿粉就不再给大家叙述了,给大家再来说说这个关于 JVM 的优化。

JVM

阿粉最开始写文章的时候,就是首先从 JVM 写起来的,大家可以搜索一下曾经阿粉写的关于 JVM 的内容,里面有对 JVM 的完整的介绍,对 FullGC  ,YGC 等垃圾收集方式,都做过介绍,这里阿粉只给大家介绍怎么去通过修改 Tomcat 的配置,来达到,我们对 JVM 的优化。

大家都知道,正确的选择不同的 GC 策略,调整 JVM、GC 的参数,可以极大的减少由于 GC 工作,而却这样会大大的提高我们程序的运行效率。

目录还是那个目录,Tomcat 的根目录下的 bin 目录,catalina.bat,Linux 的话,去修改.sh 的文件即可。

找到 JAVA_OPTS 而他就是用来设置 JVM 相关运行参数的变量的,在这里阿粉也给大家说一下关于 JVM   的参数属性,不然不能直接瞎改吧,容易出事。

-Xms:初始堆大小 物理内存的 1 /64(1GB)

-Xmx:最大堆大小 物理内存的 1 /4(1GB)

-Xmn:年轻代大小(1.4or lator) 注意的是这个 , 整个堆大小 = 年轻代大小 + 年老代大小 + 持久代大小.

-XX:NewSize:设置年轻代大小(for 1.3/1.4)

-XX:MaxNewSize:年轻代最大值(for 1.3/1.4)

-XX:PermSize:设置持久代 (perm gen) 初始值 物理内存的 1 /64

-XX:MaxPermSize:设置持久代最大值 物理内存的 1 /4

-Xss:每个线程的堆栈大小

-XX:NewRatio:年轻代 (包括 Eden 和两个 Survivor 区) 与年老代的比值(除去持久代)

-XX:+AggressiveOpts:加快编译

-XX:+UseBiasedLocking:锁机制的性能改善

-XX:+DisableExplicitGC:关闭 System.gc()

-XX:+UseParNewGC:设置年轻代为并行收集

-XX:+UseConcMarkSweepGC:使用 CMS 内存收集

-XX:MaxTenuringThreshold:垃圾最大年龄

-XX+UseCMSCompactAtFullCollection:在 FULL GC 的时候,对年老代的压缩

-XX:LargePageSizeInBytes:内存页的大小不可设置过大,会影响 Perm 的大小

-XX:+UseFastAccessorMethods:原始类型的快速优化

-XX:+UseCMSInitiatingOccupancyOnly:使用手动定义初始化定义开始 CMS 收集

到此,相信大家对“Tomcat 调优和 JVM 参数优化方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3071字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)