前言:tomcat调优总共分为两大类:1.tomcat自身调优 2.JVM调优
一、tomcat自身调优分为:
- 采用动静分离节约tomcat的性能
- 调优tomcat的线程池
- 调优tomcat的连接器
- 修改tomcat的运行模式
- 禁用AJP连接器
二、JVM调优
1. jvm调优内存
正文:详细介绍调优配置
一、tomcat自身调优
1. 采用动静分离节约tomcat的性能
静态资源如果让tomcat处理的话tomcat的性能会被损耗很多,所以我们一般都是采用:nginx+tomcat实现动静分离,让 Tomcat 只负责 jsp 文件的解析工作,nginx实现静态资源的访问。
2. 调优tomcat的线程池
打开tomcat的serve.xml,配置Executor
<Executor
name="tomcatThreadPool" <!-- 给执行器(线程池)起一个名字 -->
namePrefix="catalina-exec-" <!-- 指定线程池中的每一个线程的name前缀 -->
maxThreads="300" <!-- 线程池中最大的线程数量 -->
minSpareThreads="10" <!-- 线程池中允许空闲的线程数量(多余的线程都杀死) -->
maxIdLeTime="60000"/> <!-- 一个线程空闲多久算是一个空闲线程 -->
3. 调优tomcat的连接器Connector
打开tomcat的serve.xml,配置Connector(如果采用nginx处理静态资源,那么配置中的压缩就没有必要使用)
<Connector
executor="scrapBT-ThreadPool" <!-- 指定这个连接器所使用的执行器(线程池) -->
port="9001" <!-- 端口号 -->
protocol="HTTP/1.1" <!-- http协议 -->
maxThreads="300" <!-- 表示最多同时处理 X 个连接。相当于最大线程数 -->
maxQueueSize="3000" <!-- 最大的等待队列数,超过则拒绝请求 -->
minSpareThreads="20" <!-- 初始化 X 个连接。最小空闲线程数,这里是一直会运行的线程 -->
maxSpareThreads="300" <!-- 表示如果最多可以有 X 个线程,一旦超过 X 个,则会关闭不再需要的线程。 -->
connectionTimeout="10000" <!-- 连接超时时间 -->
redirectPort="8443" <!-- https请求端口跳转 -->
URIEncoding="UTF-8" <!-- UTF-8 -->
enableLookups=“false” <!-- 关闭 DNS 解析,减少性能损耗 -->
minProcessors='5' <!-- 服务器启动时创建的最少线程数 -->
compression="on" <!-- 打开压缩功能 (on|off) -->
compressionMinSize="2048" <!-- 启用压缩的输出内容大小,这里面默认为2KB -->
noCompressionUserAgents="gozilla, traviata" <!-- 对于这里配置的浏览器,不启用压缩 -->
compressableMimeType="text/html,text/xml,text/plain,text/css,application/javascript" <!-- 对哪些文件类型启用压缩 -->
useSendfile="false" <!-- -->
/>
4. 修改tomcat的运行模式
》Tomcat8以下版本,默认使用的就是BIO(阻塞式IO)模式(对于每一个请求都要创建一个线程来进行处理,不适合高并发)
》Tomcat8以上版本,默认使用的就是NIO模式(非阻塞式Io)
》APR(Apache Portable Runtime)(推荐使用)
是Tomcat生产环境运行的首选方式
如果操作系统未安装apr或者apr路径未指到Tomcat默认可识别的路径, 则apr模式无法启动自动切换启动nio模式。 所以必须要安装apr和native,直接启动就支持apr
apr是从操作系统级别解决异步IO问题,apr的本质就是使用jni(java native interface) 技术调用操作系统底层的IO接口,所以需要提前安装所需要的依赖
提升Tomcat对静态文件的处理性能,当然也可以采用动静分离
5. 禁用AJP连接器
Apache JServer Protocol 使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用
二、JVM调优
1. jvm调优内存
tomcat是运行在jvm上的,所以对jvm的调优也是非常有必要的。
- 找到:linux找到catalina.sh windows找到catalina.bat
- 添加的位置
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"
-Xms Java 虚拟机初始化时堆的最小内存,一般与 Xmx 配置为相同值,这样的好处是 GC 不必再为扩展内存空间而消耗性能;
-Xmx Java 虚拟机可使用堆的最大内存。实际参数大小根据服务器配置或者项目具体设置。
如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论, ,咱们下期见!