tomcat性能优化

微服务架构情况下

Tomcat配置优化

在SpringBoot中内嵌入了Tomcat服务器,比外部服务器性能要好。

1.假设我们当前在微服务应用情况下:(只提供接口,没有静态资源的)

优化策略:

SpringMVC核心入口 DispatcherSerlet

优化方案:

移除我们conf/web.xml视图层组件JspServlet

org.apache.jasper.servlet.JspServlet

JspServlet: 编译并且执行我们jsp页面

2.去除conf/web.xml中的welcome-file-list配置

3.mime-mapping作用就是告诉给浏览器处理的格式

如果但是是一个微服务rest应用的情况下,只需要配置json即可~~

4.如果服务器集群的,Session的支持不是很又友好 几乎在很多公司都是采用token替代Session session-config  其次在微服务情况下使用的比较少

5.Reloadable配置建议禁止如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序。

6.移除conf/server.xml AccessLogValve,因为大多数都采用nginx记录每次请求地址

并发性能优化

线程池优化

使用线程池的目的主要提高的多线程的复用机制;

相关核心配置:

在conf/ server.xml 配置相关线程池

 

        maxThreads="150" minSpareThreads="4"/>

相关参数配置:

name: 线程池名称.

namePrefix: 创建的每个线程的名称前缀, 单独的线程名称为 namePrefix + threadNumber.

maxThreads: 线程池中最大并发线程数, 默认值为200, 一般建议设置400~ 800 , 要根据服务器配置和业务需求而定.

minSpareThreads: 最小活跃线程数, 也就是核心线程数, 不会被销毁, 会一直存在.

prestartminSpareThreads: 是否在启动程序时就生成minSpareThreads个线程, 默认为false, 即不启动. 若不设置为true, 则minSpareThreads的设置就不起作用了.

maxIdleTime: 线程最大空闲时间, 超过该时间后, 空闲线程会被销毁, 默认值为6000, 单位为毫秒.

maxQueueSize: 最大的等待队列数, 超过则拒绝请求. 默认值为int类型的最大值(Integer.MAX_VALUE), 等同于无限大. 一般不作修改, 避免发生部分请求未能被处理的情况.

threadPriority: 线程池中线程的优先级, 默认值为5, 取值范围: 1 ~ 10.

Connector优化

默认情况下Tomcat开启了两个Connector

分别为:

Connector 监听8080 Http协议

Connector 监听8009 AJP协议 (tomcat内部之间通讯)

建议可以将Connector连接器移除,能够减少内存的消耗

IO模型优化

1.BIO:

阻塞式IO,采用传统的java IO进行操作,该模式下每个请求都会创建一个线程,

适用于并发量小的场景

2.NIO:

同步非阻塞,比传统BIO能更好的支持大并发,tomcat 8.0 后默认采用该模式

3.APR:tomcat 以JNI形式调用http服务器的核心动态链接库来处理文件读取或网络传输操作,需要编译安装APR库

4.AIO:异步非阻塞,tomcat8.0后支持

配置方法:在tomcat conf 下找到server.xml

BIO:  protocol =" org.apache.coyote.http11.Http11Protocol"

NIO: protocol ="org.apache.coyote.http11.Http11NioProtocol"

AIO: protocol ="org.apache.coyote.http11.Http11Nio2Protocol"

APR: protocol ="org.apache.coyote.http11.Http11AprProtocol"

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