1.说明最近在补充自己的不足,正好整理一下Tomcat调优。基本上面试肯定是要问问题的,所以我抽空搜集了下Tomcat调了哪些东西来看看。首先,记录调整方法。后面会补充更详细的原理和实现。下面就来介绍一下。Tomcat调优大致可以分为两类。1、Tomcat的自调优采用动静分离的方式来保存Tomcat的性能。调整Tomcat的线程池。调整Tomcat的连接器。修改Tomcat的运行方式。禁用AJP连接器。2.使用动静分离如果让Tomcat去处理静态资源,Tomcat的性能会损失很多,所以我们一般采用:Nginx+Tomcat来实现动静分离,让Tomcat只负责解析jsp文件,和Nginx实现访问静态资源。2、调优Tomcat线程池打开tomcat的serve.xml,配置Executor。相关参数说明如下。name:给executor(线程池)一个名字;namePrefix:指定线程池中每个线程的名称前缀;maxThreads:线程池的最大线程数,假设请求数超过750,这不会是指将maxThreads属性值设置为750,其最佳方案是使用“TomcatCluster”。也就是说,如果有1000个请求,两个Tomcat实例设置maxThreads=500而不是单个Tomcat实例的maxThreads=1000。minSpareThreads:线程池允许的空闲线程数(所有多余的线程都杀掉);maxIdLeTime:线程空闲多长时间视为空闲线程;其他配置其实最好看官方文档“见参考链接”。3、调优Tomcat的连接器Connector打开Tomcat的serve.xml,配置Connector,参数如下。executor:指定这个connector使用的executor(线程池);enableLookups=false:关闭DNS解析,减少性能损失;minProcessors:服务器启动时创建的最小线程数;maxProcessors:可以创建的最大线程数;acceptCount=1000:线程池中的线程全部被占用,允许放入队列的请求数;maxThreads=3000:***线程数;minSpareThreads=20:最小空闲线程数,这里是会一直运行的线程;与压缩相关的配置:如果代码已经由静态转为动态,静态页面、图片等数据不需要Tomcat处理,那么Tomcat中就不需要配置压缩;一个完整的配置如下。4.通过修改Tomcat的运行方式,BIOTomcat8以下版本默认使用BIO“blockingIO)模式。对于每个请求,必须创建一个线程进行处理,不适合高并发。NIOTomcat8及以上版本使用NIO模式默认“非阻塞IO”,APR的全称是ApachePortableRuntime,是运行Tomcat生产环境的最佳方式,如果操作系统没有安装APR或者APR路径没有指向Tomcat默认识别的路径,无法启动APR模式,会自动切换NIO模式启动,所以必须安装APR和Native,直接启动支持APR,APR从中解决异步IO问题操作系统层面,APR的本质是利用JNI技术调用操作系统底层IO接口,所以需要提前安装需要的依赖,提高Tomcat的处理性能静态文件,当然也可以采用动静分离的方式。5.禁用AJP连接器。AJP的全称是ApacheJServerProtocol,它使用的是Nginx+Tomcat架构,所以不需要AJP协议,所以禁用了AJPconnector。3、JVM调优Tomcat运行在JVM之上,因此对JVM进行调优是非常必要的。找到catalina.sh;添加;参数设置;JAVA_OPTS="-Djava.awt.headless=true-Dfile.encoding=UTF-8-server-Xms1024m-Xmx1024m-XX:NewSize=512m-XX:MaxNewSize=512m-XXermSize=512m-XX:MaxPermSize=512m-XX:+DisableExplicitGC”调整堆大小的目的是为了最大限度地减少垃圾收集时间,以最大限度地处理特定时间内的客户请求。参考https://tomcat.apache.org/tomcat-8.0-doc/config/executor.htmlhttps://tomcat.apache.org/tomcat-8.0-doc/config/index.html
