专栏名称: Java极客技术
Java 人的社区,专注 Java 一百年!
目录
相关文章推荐
51好读  ›  专栏  ›  Java极客技术

这年头还有问Tomcat调优和JVM参数优化的,你还不知道怎么回答么?那么你一定需要看看这篇文章

Java极客技术  · 公众号  ·  · 2020-10-22 07:30

正文

每天早上 七点三十 ,准时推送干货

前几天阿粉的一个小学弟在咨询阿粉面试的时候怎么还会问到关于Tomcat调优和JVM优化,我听完这个的时候,当时就想说,问这个不是应该的么?那么下面阿粉就给大家好好的掰扯掰扯这个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 优化,其实优化的就是我们在访问请求时候的并发能力,而往往并发也是我们在工作中很多时候需要去考虑的问题,而我们在这个连接器里面可以配置什么内容呢?

    "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 而很少的去改其他的配置,但是在面试中,肯定不会说让你去优化编码格式把,而我们修改的一定是其他的关于最大处理线程数,域名解析啦,

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

    "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 及其以上才会支持的。

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

"20000" port="8080" protocol="HTTP/1.1"






请到「今天看啥」查看全文