tomcat优化

Tomcat在各位JavaWeb从业者常常就是默认的开发环境,如果用tomcat做为生产环境则有很多地方需要去优化,下面就简单的讲解来从几个大方面去优化(tomcat的基本原理啥的就不讲了)

一、网络优化
二、并发优化
三、底层优化
四、主体优化
五、集群优化

一、网络优化
1、使用非阻塞连接协议(tomcat8 取消了 BIO(阻塞的连接协议))
org.apache.coyote.http11.Http11Protocol 阻塞模式的连接协议
org.apache.coyote.http11.Http11NioProtocol 非阻塞模式的连接协议
org.apache.coyote.http11.Http11Nio2Protocol 非阻塞模式的连接协议
org.apache.coyote.http11.Http11AprProtocol – 本地连接协议

2、启用压缩,消耗CPU,减小网络传输大小(加快传输速度、节省带宽)
在server.xml文件中 Connector 配置
compression="on"
disableUploadTimeout="true"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,a
pplication/javascript"
URIEncoding="utf-8"

3、超时配置
connectionTimeout="20000" 可以将超时时间设置为自己的业务处理时间

二、并发优化
1、连接数:maxConnections(排队数量)
maxThreads的设置既与应用的特点有关,也与服务器的CPU核心数量有关。通过前
面介绍可以知道,maxThreads数量应该远大于CPU核心数量;而且CPU核心数越大,
maxThreads应该越大;应用中CPU越不密集(IO越密集),maxThreads应该越大,以
便能够充分利用CPU。当然,maxThreads的值并不是越大越好,如果maxThreads过大,
那么CPU会花费大量的时间用于线程的切换,整体效率会降低

2、处理线程:maxThreads(操作系统允许多少线程,线程多大会引起切 换效能)
maxConnections的设置与Tomcat的运行模式有关。如果tomcat使用的是BIO,那么
maxConnections的值应该与maxThreads一致;如果tomcat使用的是NIO,那么类似于
Tomcat的默认值,maxConnections值应该远大于maxThreads

3、等候队列:acceptCount
这个参数需要根据业务和经验值给出一个判断,如果设置过大,后面进入的请求等待时
间会很长;如果设置过小,后面进入的请求立马返回connection refused

三、底层优化
JVM优化:固定堆内存,多线程并发收集,对象预留新生代,大对象 进入老年代,启用内联
多实例: 多个tomcat实例在一台机上,使用Nginx转发
操作系统优化:配置系统的一些参数如: 线程数(Linux服务器每进程不允许超过1000线程) 关闭IPV6,最大文件数配置、Linux线程栈大小的设置

四、主体优化
1、 关闭shutdown端口:
2、关闭ajp连接:注释
3、取消访问日志Valve阀门
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

五、集群优化
1、当线程数量达到250以上考虑集群部署
2、采用redis做session共享

你可能感兴趣的:(tomcat优化)