tomcat的优化
总的来说,Tomcat的优化大致分为两类,具体如下:
一.tomcat的优化
1.tomcat的自身调优
- 采用动静分离
- 调优Tomcat线程池
- 调优Tomcat的连接器Connector
- 通过修改Tomcat的运行模式
- 禁用AJP连接器
2.JVM的调优
-
内存调优
-
垃圾回收策略调优
下面对Tomcat的优化进行详细的说明.
二.tomcat的自身调优
- 采用动静分离
静态资源如果让Tomcat处理的话,Tomcat的性能会损耗很多所以一般采用Nginx+Tomca实现动静分离,让Tomcat只负责jsp文件的解析工作,Nginx是实现静态资源的访问. - 调优Tomcat线程池
打开Tomcat的server.xml,配置Executor
<Executor
name="tomcatThreadPool"
namePrefix = "catalina-exec-"
maxThreads = "500"
minSpareThreads = "20"
maxIdleTime = "60000"
接下来介绍一下参数的含义:
name : 给执行器(线程池)起一个名字
namePrefix : 指定线程池中的每一个线程的name前缀
maxThreads :线程池中最大的线程数量
minSpareThreads : 线程池中允许空闲的线程数量(多余的线程都杀死)
maxIdleTime :一个线程空闲多久算是一个空闲线程
- 调优Tomcat的连接器Connector
打开Tomcat的server.xml,配置Connector
enableLookups == false:关闭DNS解析,减少性能损耗
minProcessors:服务器启动时创建的最少线程数
maxProcessors:最大可以创建的线程数
acceprCount=1000:线程池中的线程都被占用,允许放到队列中的请求数
maxThreads = 3000;最大线程数
minSpareThreads = 20;最小空线程数,这里是一直会运行的线程
与压缩有关的配置,若对代码进行了动静分离,静态页面和图片等数据就不需要tomcat处理
-
通过修改Tomcat的运行模式
BIO,在tomcat8以下,默认使用BIO模式,对于每一个请求都要创建一个线程来进行处理,不适合高并发。
配置信息是在conf/server.xml文件中,
NIO,tomcat8以上的版本,默认使用NIO
APR,全称 Apache Portable Runtime,是Tomcat生产环境运行的首选方式,如果操作系统未安装 APR 或者 APR 路径未指到 Tomcat 默认可识别的路径,则 APR 模式无法启动,自动切换启动 NIO 模式。所以必须要安装 APR 和 Native,直接启动就支持 APR,APR是从操作系统级别解决异步 IO 问题,APR 的本质就是使用 JNI 技术调用操作系统底层的 IO 接口,所以需要提前安装所需要的依赖提升 Tomcat 对静态文件的处理性能,当然也可以采用动静分离。 -
禁用AJP连接器
AJP的全称 Apache JServer Protocol,使用 Nginx+Tomca t的架构,所以用不着 AJP 协议,所以把AJP连接器禁用。
配置信息是在conf/server.xml文件中,将图中的部分进行注释。
三、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"