1、tomcat的调优方式
自身调优
- 配合NG采用动静分离节约tomcat性能
- 调整tomcat线程池
- 调整tomcat的连接器
- 修改tomcat的运行方式
- 禁用AJP连接器
jvm的调优:调整jvm的内存
2、自身调优
1、调整线程池:配置server.xml,配置Executor
- name:给执行器(线程池)起一个名字
- namePrefix:指定线程池中的每一个线程的name前缀
- maxThreads:线程池中最大的线程数量
假设:请求的数量超过了“750”,这将不是意味着将maxThreads属性值设置为“750”,它的最好解决方案是使用“Tomcat集群”。
也就是说,如果有“1000”请求,两个Tomcat实例设置“maxThreads= 500”,而不在单Tomcat实例的情况下设置maxThreads=1000。 - minSpareThreads:线程池中允许空闲的线程数量(多余的线程都杀死)
- maxIdLeTime:一个线程空闲多久算是一个空闲线程
2、调整连接器:配置server.xml,配置connector
- enableLookups="false":关闭dns解析,减少性能损耗
- minProcessors:服务器启动时创建的最少线程数
- maxProcessors:最大可以创建的线程数
- acceptCount="1000":线程池中的线程都被占用,允许放到队列中的请求数
- maxThreads="3000":最大线程数
- minSpareThreads="20":最小空闲线程数,这里是一直会运行的线程
完整的配置
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000" ##超时时间,毫秒,这里是20秒
redirectPort="443"
maxThreads="3000" ##最大线程数
minSpareThreads="20" ##最小空闲线程数,这里是一直会运行的线程
acceptCount="1000" ##接收的队列数
enableLookups="false" ##关闭dns解析,减少性能损耗
server="None"
URIEncoding="UTF-8"
/>
3、修改tomcat的运行模式
NIO: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对静态文件的处理性能,当然也可以采用动静分离
安装参考:https://blog.csdn.net/ClementAD/article/details/47320037(感谢这位大哥)
4、禁用AJP(Apache JServer Protocol)连接器
使用NG实现动静分离,不使用AJP协议,可以禁用,配置server.xml文件
3、JVM调优
尝试的参数设置:
#调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求
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"